MySQL优化和索引

MySQL优化和索引,mysql,Mysql,嗨,伙计们,请给我这个建议 我有一张有一百万张唱片的主列表。 我将索引用于CycleDate和ProductType。 我期望记录计数为100132,但是sql扫描 太多行了 explain SELECT * FROM tblmasterlist where CycleDate BETWEEN '2014-08-01' AND '2014-08-30' 您在CycleDate上的索引正常,并用于此查询。如Mike所述,确保它是一个Typ=BTREE,因为您选择了一系列值(请参阅) EXPL

嗨,伙计们,请给我这个建议

我有一张有一百万张唱片的主列表。 我将索引用于CycleDate和ProductType。 我期望记录计数为100132,但是sql扫描 太多行了

explain SELECT * FROM tblmasterlist where  CycleDate BETWEEN '2014-08-01' AND '2014-08-30'



您在
CycleDate
上的索引正常,并用于此查询。如Mike所述,确保它是一个
Typ=BTREE
,因为您选择了一系列值(请参阅)

EXPLAIN
给出的记录数是对行数的估计,而不是MySQL必须扫描的实际行数(请参阅):

您可以通过更新索引统计信息来提高准确性:

OPTIMIZE TABLE tblmasterlist

如果您使用cycledate>=2014-08-01的老式方法,并且cycledate是您的btree类型索引,那么会怎么样?请尝试运行ANALYZE TABLE;MRR是否在服务器上?您可以选中
选择@@optimizer\u开关如果您能显示创建表,也会很有帮助。我想回顾一下您的indexestnx@Mike关于这个想法的内容cycledate>=2014-08-01和cycledate
OPTIMIZE TABLE tblmasterlist