我需要根据月份和年份选择记录,月份和年份将来自PHP
所以我有这样的查询
SELECT id, created FROM table_name WHERE YEAR(created) = 2020 AND MONTH(created) = 05 LIMIT 500;
这里创建的是日期时间字段,此查询的问题是,如果表的记录较少,则它工作正常,但是当表记录增加时,查询变得非常慢
我在 10,000-2020 年的表中有超过 2020 条记录,总共有 100 万条记录,因此执行此查询大约需要 11 秒,我怀疑这是因为查询正在进行全表扫描
帮助我提供解决方案以使此查询执行得更快?
当您在 where 子句中使用函数时,您在 where 子句中使用 YEAR(( 和 MONTH(( 函数 MySQL 不使用该列的索引来执行查询。
您可以将查询更改为下面并尝试
SELECT id, created FROM table_name WHERE created between '2020-05-01 00:00:00' and '2020-05-31 23:59:59'
** 不要忘记为您的字段添加索引。