文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

10.2.1.23 避免全表扫描

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

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

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

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

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

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