文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  避免全表扫描

10.2.1.23 避免全表扫描

来自 EXPLAIN 的输出显示 ALLtype 列中,当 MySQL 使用 全表扫描 来解决查询时。这通常发生在以下情况

  • 表非常小,以至于执行表扫描比使用键查找更快。对于具有少于 10 行和短行长度的表,这很常见。

  • ONWHERE 子句中没有可用的索引列限制。

  • 您正在将索引列与常量值进行比较,并且 MySQL 已经计算出(基于索引树),这些常量覆盖了表中很大一部分,并且表扫描会更快。参见 第 10.2.1.1 节,“WHERE 子句优化”

  • 您正在通过另一列使用基数低的键(许多行匹配键值)。在这种情况下,MySQL 假设使用该键可能需要许多键查找,而表扫描会更快。

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