为什么 MySQL 不使用我的索引?

为什么 MySQL 不使用我的索引?

💡 原文英文,约3100词,阅读约需12分钟。
📝

内容提要

MySQL索引不被使用的原因之一是将索引设置为不可见。可以通过ALTER TABLE命令将索引设置为不可见,并通过SHOW INDEXES命令查看索引是否可见。如果需要强制使用特定的索引,可以使用USE INDEX命令。但是需要谨慎使用此功能,并在数据发生变化时重新评估是否需要强制使用特定的索引。

🎯

关键要点

  • MySQL索引不被使用的原因之一是将索引设置为不可见。
  • 可以通过ALTER TABLE命令将索引设置为不可见,并通过SHOW INDEXES命令查看索引是否可见。
  • 使用EXPLAIN命令可以确定查询中使用了哪些索引。
  • 选择性和基数是影响索引使用的重要因素。
  • 基数是特定列中不同值的数量,而选择性是这些值的独特性百分比。
  • 选择性越高,索引在优化查询性能时越有效。
  • 过时或不准确的统计信息可能导致优化器做出错误的决策。
  • 在某些情况下,表扫描可能比索引扫描更快。
  • 某些查询无法使用索引,例如使用通配符的搜索。
  • 复合索引的使用需要遵循特定的顺序规则。
  • 连接不匹配的列可能导致索引无法使用。
  • 索引混淆是指将索引列包装在函数中,从而使其对MySQL不可见。
  • 可以通过ALTER TABLE命令将索引设置为不可见,以测试索引的影响。
  • 可以使用USE INDEX命令强制使用特定的索引,但需谨慎使用。
➡️

继续阅读