我需要根据月份和年份选择记录,月份和年份将来自PHP
所以我有类似]的查询>
SELECT id, created FROM table_name WHERE YEAR(created) = 2020 AND MONTH(created) = 05 LIMIT 500;
这里创建的是datetime字段,此查询的问题是,如果表中的记录较少,但是当表中的记录增加时,查询将变得非常缓慢,这是正常的
[我的表中有2020-05年的记录超过10,000条,共有100万条记录,因此执行此查询大约需要11秒钟,我怀疑这是因为该查询正在执行全表扫描
帮助我提供使该查询更快地执行的解决方案?
我需要根据月份和年份选择记录,月份和年份将来自PHP,所以我有类似SELECT id的查询,它是从table_name WHERE YEAR(创建)= 2020 AND MONTH(...]创建的。
为了提高性能,您需要索引,并且为了更好地使用索引,应避免在where子句中使用与索引列相关的功能所以你可以尝试添加索引
create index myidx on table_name (created)
[在where子句中使用函数时,您在where子句中使用YEAR()和MONTH()函数,MySQL不使用该列的索引来执行查询。