查看“避免全表扫描”的源代码
←
避免全表扫描
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
当MySQL使用全表扫描来解析查询时,EXPLAIN的输出在类型列中显示为ALL。这通常发生在以下情况下: * 表的大小很小,执行全表扫描比使用索引查找更快。这在行数少于10行且行长度较短的表中很常见。 * ON或WHERE子句中没有可用于索引列的限制条件。 * 您正在将索引列与常量值进行比较,而MySQL已根据索引树计算出常量覆盖表的太大部分,使用表扫描会更快。 * 您正在通过另一列使用基数较低的键(许多行与键值匹配)。在这种情况下,MySQL假设使用键可能需要许多键查找,并且使用表扫描会更快。 <br> 对于小表,表扫描通常是适当的,性能影响很小。对于大表,请尝试以下技术以避免优化器错误地选择表扫描: <ul> <li><p>使用ANALYZE TABLE tbl_name命令更新扫描表的键分布。</p></li> <li><p>对于扫描的表,使用FORCE INDEX命令告诉MySQL表扫描与使用给定索引相比非常昂贵:</p> <pre> SELECT * FROM t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name=t2.col_name;</pre></li> <li><p>使用–max-seeks-for-key=1000选项启动mysqld,或者使用SET max_seeks_for_key=1000命令告诉优化器假设没有键扫描导致超过1000个键查找。</p></li></ul>
返回至“
避免全表扫描
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息