3 回答

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

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

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