Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


10.2.1.23 避免全表扫描

EXPLAIN 语句的输出显示EXPLAIN 中的ALL 在类型列中,当 MySQL 使用全表扫描来解决查询时。这通常发生在以下条件下:

  • 表格太小,进行表扫描比进行键查找更快。这是常见的,对于少于 10 行的表格和短的行长。

  • 没有可用的限制在 ON 或 WHERE 子句中,对于索引列。

  • 您正在将索引列与常量值进行比较,MySQL 已经根据索引树计算了常量覆盖了太大的一部分表格,并且认为表扫描将更快。见第10.2.1.1节,“WHERE 子句优化”

  • 您正在使用低卡度的键(许多行匹配键值)通过另一个列。在这种情况下,MySQL假设使用键可能需要许多键查找,并且认为表扫描将更快。

对于小表格,表扫描通常是合适的,性能影响是可忽略的。对于大表格,尝试以下技术来避免优化器错误地选择表扫描: