mysql索引选择错误的几种情况 mysql之优化器选择索引|天天热门
文章目录
(相关资料图)
前言索引选择错误的几种情况统计异常排序导致的异常 扫描行数数的统计总结
前言
之前文章,把索引和日志串起来介绍了一下,介绍了什么时候时候用普通索引,什么时候用唯一索引。还说明了,为什么要用普通索引,为什么要用唯一索引。和使用的原因。今天我们把索引和第一章介绍的mysql大致组成串联起来,来介绍下优化器的索引选择。
索引选择错误的几种情况
统计异常
首先创建一个表
CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`), KEY `b` (`b`)) ENGINE=InnoDB;
然后插入10万条数据,从(1,1,1)到(100000,100000,100000),然后执行下面这个sql
select * from t where a between 10000 and 20000;
这个时候呢,优化器会选择那个索引呢。结果看下面 他会选择a索引。 但是同样的查询,如果是下面的这个查询过程 他会是什么结果呢。它会走主键索引进行全表扫描。那为什么放着索引a不走,非得走主键索引呢。有两个原因 1.主键索引和普通索引扫描行数相差不大得情况下,他会选择主键索引,这是因为走普通索引需要回表(这个之前得章节有介绍,这里不再介绍了)。优化器会认为,回表的时间会大于多扫描的那几行。 2.索引统计错误,就是比如现在这个,主键索引是100000多行,普通索引是30000多行,相差这么大。它为什么还要走主键索引呢,这个就是它在统计索引时出现了异常,可能统计普通索引a可能需要扫描9万多行,或者10万多行。这个时候就是第一种的情况了。 统计索引出现异常怎么办呢。有两种方案 1.analyze table t 命令,可以用来重新统计索引信息。 2.force index(a) 强行指定索引
排序导致的异常
explain select * from t where (a between 1 and 1000) and (b between 50000 and 100000) order by b limit 1;
看上面这个语句,走a的话只要扫面1000多行,走b的话需要扫面5000多行,正常来说应该是走a快,事实也是走a快,但是优化器却选择了走b,这个是为什么呢。首先这个表已经矫正过索引的信息了,不会出现统计异常的情况了。那是什么原因呢。 那是因为order by b,结果需要根据b排序,走索引b 的话不需要排序了,b直接是有序的。优化器认为排序时间会大于多扫描那些行数的时间。所以会选择走b。那有什么解决方案呢。 1.将sql的order by b改为 order by a,b,这样的话系统会认为a和b都需要排序,这样它就会选择扫描行数少的。 2.创建一个更好的索引,或者删除一些索引。比如上面这个就可以直接删除索引b,这样它就会走索引a了。 3.force index(a) 强行指定索引,上面统计异常也可以这么干。
select * from t force index(a) where (a between 1 and 1000) and (b between 50000 and 100000) order by b limit 1;
扫描行数数的统计
上面说了那么多,基本都是基于扫描行数为基准的,那么扫描行数是怎么统计的。首先,在开始扫描之前,优化器是不会知道,具体的扫描行数的。而是根据统计信息估算出扫描行数。统计信息又是什么呢。统计信息是一个索引的区分度,也就是一个索引上不同值得多少。而一个索引上不同值得个数,被称为统计基数。所以统计基数越大,也就是区分度越好。 那么怎么得到统计基数呢,首先一行一行扫描不现实,虽然精确,但是太耗费时间。所以mysql采用了采样统计得方式,因为mysql数据在磁盘中是以数据页得形式存储的。mysql会选择n个数据页,算出每个数据也的基数平均值,最后乘以这个索引的数据页数,得到这个索引的基数。而优化器就是根据这个基数进行索引选择的,虽然有一定的偏差,但是基本不会影响正确索引的选择。
总结
今天我们介绍了,一些常见的索引选择错误的情况,大致就两种。然后还介绍了每种的情况所对应的解决方案有哪些,方案很多,大家可以自信选择。比较通用的是指定索引,但是不见建议大家这么干。因为指标不治本,不太好。最后就是介绍优化器选择的关键,扫描行数的怕判定。
标签:
相关推荐:
最新新闻:
- 环球看点!传感器模块是如何应用于手机的?分享传感器模块之于手机方面的应用
- 鼠标事件:MouseEventer接口的5个方法_世界热文
- 小程序开发外包费用一般是多少?小程序开发外包的总成本有哪些?
- mysql索引选择错误的几种情况 mysql之优化器选择索引|天天热门
- 改错前奥运参赛国的出场次序(附程序)_焦点精选
- 什么是一本二本?一本和二本的区别是什么? 全球通讯
- 天天观察:索尼发布会:三月PS+二三档游戏公开:《幽灵线东京》、《神秘海域盗贼遗产》等
- 天天快消息!计算机网络最早出现在哪个年代?互联网、因特网、万维网三者的关系
- 《街头霸王6》新实机 展示嘉米等三个新角色
- 晨报:《死亡岛2》3月2日公开新实机 《真人快打12》确认于今年发布_焦点速看
- 世界微速讯:State of Play:《街头霸王6》新预告 南美热裤少女闪亮登场
- 全球快看点丨创见u盘怎么样?创见U盘价格及快速修复方法
- 当前速递!什么是基础设施建设?础设施的特点与作用
- 支付宝用zhifubao.com域名意欲何为?详情介绍-世界独家
- 【世界时快讯】lic是什么文件?lic文件怎么打开?
- 前沿热点:xbox游戏机怎么样?微软Xbox电视游戏机评测
- 马克·扎克伯格简介 全球最年轻的亿万富豪
- 环球资讯:光载毫米波无线电通信技术现状介绍 光载毫米波无线电通信技术的发展
- 什么是频谱分析仪?频谱分析仪详情介绍 全球今热点
- 全球观速讯丨二进制转八进制的两种方法
- 世界热资讯!苹果作为市场上的主流手机有哪些维修点?苹果手机维修点查询
- 网文6个最好的免费在线音乐识别器——Shazam
- 接口测试工具——SoapUI下载安装教程
- 如何制作手机上网和多台电脑上WIFI?制作虚拟路由器免费WIFI方法-快消息
- windowsserver2012配置php环境的步骤
- 当前快看:电脑屏幕录像应该怎么操作?录制屏幕方法
- 帝尔复读机怎样?帝尔复读机价格性能介绍_焦点热议
- 博士音响好不好?博士音响品牌介绍:每日头条
- 海顿燃气壁挂炉好不好?海顿燃气壁挂炉优点介绍
- 稻盛和夫为什么值得学习?《干法》精华解读 世界聚看点
- 中国现在有多少家苹果零售店?苹果零售店在中国的发展历程
- 服务器遭遇DDoS攻击时会有哪些症状?DDos攻击的基本原理及症状
- 计算机b级英语翻译 英语B级考试翻译必备常用短句
- 每日资讯:什么叫电子邮箱?注册电子邮箱的方法有哪些?
- u盘和硬盘都需要建立文件系统吗?linux系统下创建文件系统
- 不可预料的压缩文件末端解决办法是什么?解决方法步骤_热点在线
- 【Bootstrap4】列表组的创建方法
- 努比亚Z17畅享版和Z17有什么区别?性能与双摄区别在哪?:焦点精选
- 速看:如何实现一个打点计时器?javascript打点计时器
- java爬虫框架介绍:Heritrix优势劣势
- 【科研必备】初中数学符号及读法大全(收藏版)
- 《自杀小队:战胜正义联盟》4人合作游玩演示视频-全球热议
- 亚马逊雨林求生游戏《绿色地狱VR》将支持PSVR2:热资讯
- 小米红米高性能笔记本特价仅需4499元-环球精选
- 游戏玩家必备!京东京造三模游戏鼠标仅229元
- 环球即时看!27寸4K办公 红米显示器不到1500
- 27寸2K 300Hz超高刷新 华硕ROG推出电竞新品 环球简讯
- 全球观察:又来忽悠?消息称苹果表将能无伤测量血糖
- 《THE FINALS》增加PS5/XS版 PC版封测3/7-21进行 快报
- 《死亡岛2》3月2日23点公开实机演示 一场杀戮将临
- 《极限竞速:地平线5》“拉力冒险”新扩展包公布
- 《THE FINALS》增加PS5/XS版 PC版封测3/7-21进行 快报
- AMD R9 7945HX大放异彩 16核心打平Intel 24核心|焦点简讯
- 火影20周年作品《鸣人X博人究极忍者风暴连接》公布
- 个人辞职模板格式-个人辞职模板:天天看热讯
- 热门看点:百万英里 Cruise无人驾驶汽车达成里程碑
- 支持8K!凯宠TypeC线100瓦只要29.45元
- 全国有6亿栋房屋?飙上热搜!百亿新冠自测公司暴跌99.6%,曾是美国"第一"!企业月薪4万招人去养鸡…
- 《原子之心》PC平台性能分析:多种配置下流畅运行-环球今亮点
- 联想小新黑屏死机成投诉重灾区 QQ维权群已有近千人:动态焦点
- "姐夫"要回来啦!《守望先锋》原班人马组建新工作室
- Fami通新一周销量榜 《霍格沃茨之遗》继续登顶 环球热资讯
- 拒绝美式霸凌!Xbox称10年的COD合约派对大家都能参与
- 世界视点!B社确认三上真司即将离职:感谢他的贡献
- Fami通满分神作 《428:被封锁的涩谷》Steam 27元促销
- 每日消息!明基E540智能商务投影机 让我从此爱上开会!
- 首个香港直航山东旅游团来青,点名要去老城区看看 环球头条
- 《八方旅人2》发售倒计时1天!商人小队邀您上号游戏
- 徐工晒《流浪地球2》“化缘”记录 网友:一眼诈骗 当前快播
- 三上离开后动向猜测 可能成立一家中国投资的工作室
- 尼克尔Z 400mm f/4.5 VR S荣膺DPReview读者选择最佳定焦镜头奖
- 世界信息:《最后生还者》幕后花絮:乔尔骑的马竟然是假的!
- 《龙之谷》官宣将推出回忆服 首曝内容宣传片
- 雷蛇继续推出2023款灵刃15游戏本, i7+RTX 4060版卖19999元|全球今日报
- 【天天热闻】影驰星曜DDR5 6800MHz内存开售,纯白系列再添一员
- 硬核!为防95后员工摸鱼 山东一公司办公桌旁装监控-头条焦点
- 天天最新:《霍格沃茨之遗》或将有续作?华纳想打造成长期IP
- 三上真司即将离开B社-全球讯息
- 环球新资讯:人间烟火气!梧州这条苍海特色网红街区,你有去打卡过吗?
- 联想个人云A1仅售749元,内置3TB硬盘,附赠爱奇艺白金会员年卡
- 魅族20 Pro配置曝光:主摄5000万像素、搭载二代骁龙8处理器-环球热消息
- 雷蛇灵刃新款开售,搭载RTX 40系显卡+i7-13800H
- 搭载骁龙8 Gen 2处理器!索尼Xperia 5 V跑分曝光 世界热消息
- 影驰HOF Pro DDR5系列内存开售,最高32GB 8000MHz 天天播报
- 战神开发商恭喜《地平线:山之召唤》发售:奎爷戴上PSVR2