在另一个数据库中执行相同查询时,为什么不使用索引?

时间:2019-04-25 02:00:37

标签: mysql indexing explain

我有两个数据库。 一种是prod数据库(mysql) 另一个是开发数据库(mysql)

当我使用解释键,开发数据库使用索引时, 但是prod数据库不起作用。

相同查询 同一数据库(开发数据库是产品副本) 相同的索引.....

所以我检查了索引,“显示索引” ...

但索引相同。

说明开发数据库的结果 enter image description here

产品数据库的解释结果 enter image description here

我希望“ p”表使用索引“ idx_payment_tb”

1 个答案:

答案 0 :(得分:0)

当优化器选择不使用索引时,通常有一个很好的理由-即数据分布使得使用索引实际上会更慢。

请提供SHOW CREATE TABLEEXPLAIN SELECT作为文本,而不是图像。有许多原因可以使优化程序避免使用索引;我们大概可以告诉您这次使用的原因。

  • 如果它是一个很小的表,为什么还要麻烦索引。
  • 如果表中使用的键“很多”出现(在您的开发人员和生产人员之间可能有所不同),则索引和数据之间的来回跳动可能会变慢。
  • 两台计算机之间的统计信息可能不同。