首页 > 其他分享 >一招让order by id索引失效!

一招让order by id索引失效!

时间:2023-12-25 14:33:34浏览次数:36  
标签:index DEFAULT prefer order 索引 id NULL 主键

测试用例

CREATE TABLE `sbtest1` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `k` int(10) unsigned NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `idx_pad` (`pad`),
  KEY `idx_k` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=10005349 DEFAULT CHARSET=utf8 MAX_ROWS=1000000

复现

set optimizer_switch = 'prefer_ordering_index=off';

一招让order by id索引失效!_测试用例

order by id主键失效,全表扫描


set optimizer_switch = 'prefer_ordering_index=on';

一招让order by id索引失效!_测试用例_02

开启后,顺利用到主键索引。


原理

参数optimizer_switch = 'prefer_ordering_index=on' 如果查询中包含

ORDER BY 或 GROUP BY 和 LIMIT 子句,优化器优先会选择有序索引(主键)。如果将其关闭,MySQL 不会扫描 SELECT ... FROM t ORDER BY pk_col LIMIT n 的主键,而是进行全表扫描和排序。


标签:index,DEFAULT,prefer,order,索引,id,NULL,主键
From: https://blog.51cto.com/hcymysql/8968388

相关文章

  • 18 事务必须遵循ACID这4个特性
    事务必须遵循ACID这4个特性。分别代表原子性、一致性、隔离性、持久性。原子性就代表,事务的执行和回退是一个整体,事务中包含的sql要么全部执行,要么全部回退。一致性就是,事务执行前后,数据库都是处于一致性状态中。隔离性就是,事务在提交之前,对于其它事务都是不可见的。直到提交时。持......
  • Android 快速实现View的展开和收缩效果
    原文:Android快速实现View的展开和收缩效果-Stars-One的杂货小窝看到一篇文章用到了一个布局的属性animateLayoutChanges就能实现展开和收缩效果,特意记录一下效果代码<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxml......
  • blazor maui hybrid app显示本地图片
    啊......一通操作下来感觉就是两个字折磨跨平台有跨平台的好处但框架本身支持的有限很多东西做起来很曲折哎这里总结一下笔者为了折腾本地图片显示的尝试为什么要做本地图片展示呢如果是做需要网络连接的app这个一般是不需要的(要做上传前预览/编辑的话还是要的)但对......
  • 从新手到高手:AI绘画实战中的Midjourney
    ......
  • 使用idea连接github
    一、git概述1、版本控制2、git工作机制和代码托管中心二、git常用命令三、分支1、分支的操作2、代码冲突解决冲突:四、远程仓库1、远程仓库操作2、跨团队协作3、SSH免密登录五、在Idea中使用git1、设置git忽略文件2、设置.gitconfig(和git.ignore在同一个目录下)3、使用idea进行git......
  • 谷歌搜索引擎数据采集工具
    谷歌搜索引擎数据采集工具(“大镜山谷歌搜索数据采集器”,官网168318.com),基于谷歌搜索引擎的数据采集软件。根据用户输入的关键词,实时采集采集谷歌的搜索结果。其智能挖掘功能非常强大,采集的数据包括网站、标题、描述、邮件地址、手机或电话号码、facebook、linkin、twitter、youtube......
  • 汇编-idiv有符号整数除法
     有符号除法就是将一个有符号数除以另一个有符号数有符号整数除法与无符号除法几乎相同,只有一个重要的区别:在进行除法之前,必须将被除数进行符号扩展。为了说明为何有此必要,我们先不这么做。下面的代码使用MOV将-101赋值给AX,即DX:AX的低半部分:       ......
  • 一步步教你实现baidu网盘不限速(千千助手)
    话不多说,直接进入主题一、先安装油猴插件[Tampermonkey]以下用谷歌浏览器演示,打开浏览器,点击右上角的【...】,找到其中【更多工具】的【扩展程序】选项。二、然后选择左上角的三横杠三、再选择最下面的【打开Chrome应用商店】选项四、在上方搜索栏上输入【Tampermonkey】,然后回车进......
  • 【练习】爬虫-基础1 - GlidedSky 源码参考!
    网上有很多大佬为了帮助渣渣爬虫提升,都有搭建爬虫练习平台网站,这种网站的好处是可以练习爬取,同时网上也有很多参考教程,尤其适合学习练手使用。爬虫练习网站,镀金的天空-GlidedSky,爬虫-基础1,爬取网页上的数据,计算求和。爬虫-基础1“爬虫的目标很简单,就是拿到想要的数据。这里有一个网......
  • 被面试官PUA了:创建索引时一定会锁表?
    索引主要是用于提高数据检索速度的一种机制,通过索引数据库可以快速定位到目标数据的位置,而不需要遍历整个数据集,它就像书籍的目录部分,有它的存在,可以大大加速查询的效率。那么问题来了:在创建索引时一定会锁表吗?如果你看的是网上的一些资料,或者是通过chatgpt,那么很可能得到的......