mysql - 哪个在 MySQL where 子句 : YEAR() vs BETWEEN? 中表现更好

标签 mysql performance

我需要从 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/

相关文章:

c++ - 使用 VS 2015 编译的可执行文件比使用 2013 慢得多

c - 为什么 _mm512_store_pd 在这个矩阵乘法代码中 super 慢?

mysql - JetBrains DataGrip中如何将CSV数据导入MySQL

mysql - 从 mysql 数据库中获取不同格式的数据

mysql - Left Join 基于字段值

mysql - 在mysql php中以特定格式显示消息

asp.net - .aspx 文件必须有页面指令吗?

python - 找到两对总和为相同值的对

javascript - javascript 是否有 blit 或 memcpy 命令?

php - mysql 行结果的字段名称变量