我需要从 MySQL 数据库中查找给定年份中创建的所有记录。有什么方法可以使以下其中一项比另一个慢?
WHERE create_date BETWEEN '2009-01-01 00:00:00' AND '2009-12-31 23:59:59'
或
WHERE YEAR(create_date) = '2009'
最佳答案
这个:
WHERE create_date BETWEEN '2009-01-01 00:00:00' AND '2009-12-31 23:59:59'
...效果更好,因为它不会更改 create_date
列中的数据。这意味着如果 create_date
上有索引,则可以使用该索引——因为该索引位于列中存在的实际值上。
不能在 YEAR(create_date)
上使用索引,因为它只使用了值的一部分(需要提取)。
关于mysql - 哪个在 MySQL where 子句 : YEAR() vs BETWEEN? 中表现更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918476/