当前位置: 首页 > news >正文

【MySQL精通之路】SQL优化(1)-查询优化(23)-避免全表扫描

当MySQL使用全表扫描来解析查询时,EXPLAIN的输出在type列中显示ALL。

这种情况通常发生在以下情况下:

该表非常小,因此执行全表扫描比查找关键字更快。这对于少于10行且行长较短的表来说很常见。

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

您正在将索引列与常数值进行比较,MySQL(根据索引树)计算出,这些常数值覆盖了表的很大一部分,并且全表扫描会更快。参见“WHERE子句优化”。

【MySQL精通之路】SQL优化(1)-查询优化(1)-WHERE子句-CSDN博客

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

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

使用ANALYZE TABLE tbl_name更新扫描表的KEY分布。参见“分析表语句”。

对扫描的表使用FORCE INDEX来告诉MySQL,与使用给定索引相比,全表扫描非常昂贵:

SELECT * FROM t1, t2 FORCE INDEX (index_for_column)WHERE t1.col_name=t2.col_name;

参见“索引提示”。

使用--max seeks for key=1000选项启动mysqld,或者使用SET max_seeks_for_key=1000告诉优化器key扫描不会超过1000个。

请参阅“服务器系统变量”。

http://www.lryc.cn/news/353485.html

相关文章:

  • 【Linux】写时拷贝技术COW (copy-on-write)
  • 用python使用主成分分析数据
  • 用WPS将多张图片生成一个pdf文档,注意参数设置
  • virtual box ubuntu20 全屏展示
  • react中的数据驱动视图,useState()的使用
  • 金融数据库,实时行情,股票财务数据在线查询
  • 开源模型应用落地-LangSmith试炼-入门初体验-数据集评估(三)
  • 设计模式 15 Decorator Pattern 装饰器模式
  • cuda11.8安装torch2.0.1
  • 新手困 ViewModel与Activting的databinding2个对象 区别
  • Cocos Creator 声音播放与管理详解
  • 今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月26日,星期日
  • IDEA快速生成类注释和方法注释的方法
  • [集群聊天服务器]----(七)业务模块之一对一聊天、添加好友函数、好友类以及离线消息类
  • java中使用jedis连接redis
  • 【多线程开发 2】从代码到实战TransmittableThreadLocal
  • 【车载以太网测试从入门到精通】——SOME/IP协议测试
  • 作业39 sqrt应用
  • springboot 实现跨域的几种方式
  • springmvc Web上下文初始化
  • Verilog实战学习到RiscV - 2 : wire 和 reg 的区别
  • OpenGL给定直线起点和终点不同的颜色,使用中点Bresenham画线
  • IT行业的现状与未来发展趋势:从云计算到量子计算的技术变革
  • 电脑远程控制另一台电脑怎么弄?
  • 软件设计师备考 | 案例专题之面向对象设计 概念与例题
  • UniApp 2.0可视化开发工具:引领前端开发新纪元
  • 前端调用浏览器录音功能且生成文件(vue)
  • 「大数据」Kappa架构
  • 详细分析Element Plus中的ElMessageBox弹窗用法(附Demo及模版)
  • Python自动化工具(桌面自动化、Web自动化、游戏辅助)