doc*_*_id 5 mysql performance performance-tuning
我有一项CRON任务需要从 MySQL InnoDB 表中提取给定月份生日的客户。生日字段已编入索引且类型为DATE。
过滤四月,我可以通过以下任一方式查询客户表:
SELECT *
FROM customers
WHERE birthday LIKE "2015/04/%";
Run Code Online (Sandbox Code Playgroud)
或者:
SELECT *
FROM customers
WHERE MONTH(birthday) = 4;
Run Code Online (Sandbox Code Playgroud)
你会推荐哪一个,为什么?
我会去:
SELECT *
FROM customers
WHERE MONTH(birthday) = 4;
Run Code Online (Sandbox Code Playgroud)
...因为这是按月选择的常用方法。UsingMONTH()会调用 MySQL 中的一个内置函数,但是如果你使用LIKE它会将它作为字符然后进行比较,因此 MySQL 不会执行一个操作,而是执行两个操作。
| 归档时间: |
|
| 查看次数: |
40643 次 |
| 最近记录: |