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

问题描述 投票:0回答:1

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

当我使用explain key时,开发数据库使用了索引,但是prod数据库不起作用。

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

所以我检查索引,'显示索引'...

但索引相同。

解释开发数据库enter image description here的结果

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

我希望'p'表使用索引'idx_payment_tb'

mysql indexing explain
1个回答
0
投票

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

请提供SHOW CREATE TABLEEXPLAIN SELECT作为文字,而不是图像。优化程序可能会避开索引的原因有很多;我们可以告诉你这次使用的原因。

  • 如果它是一个小桌子,为什么要打扰索引。
  • 如果使用的密钥在表中出现“很多”(在dev和prod之间可能不同),则索引和数据之间来回弹跳可能会更慢。
  • 两台机器之间的统计数据可能不同。
© www.soinside.com 2019 - 2024. All rights reserved.