3 回答

TA貢獻1712條經(jīng)驗 獲得超3個贊
永遠不要使用像這樣的選擇器DATE(datecolumns) = '2012-12-24'-它是性能殺手:
它將DATE()為所有不匹配的行(包括那些行)計算
它將無法使用索引進行查詢
使用起來更快
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
因為這將允許索引使用而無需計算。
編輯
正如Used_By_Already所指出的那樣,自2012年最初回答以來,出現(xiàn)了一些MySQL版本,在該版本中使用'23:59:59'作為結束日不再安全。更新后的版本應為
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
答案的要旨,即在計算出的表達式上避免選擇器,當然仍然存在。

TA貢獻1811條經(jīng)驗 獲得超4個贊
... WHERE date_column >='2012-12-25' AND date_column <'2012-12-26'(如果您在date_column上有索引)可能比更好地工作DATE。

TA貢獻1802條經(jīng)驗 獲得超5個贊
您可以使用%:
SELECT * FROM datetable WHERE datecol LIKE '2012-12-25%'
添加回答
舉報