| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL中order by的优化方案 -> 正文阅读 |
|
[大数据]MySQL中order by的优化方案 |
MySQL中有两种排序方式: Using filesort:通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区 Using index:通过有序索引顺序扫描直接返回有序数据,这种情况下使用的是 上述的这两种排序方式, 上面都是理论,我们直接上测试! 数据准备: 这里我用的表是 表中数据: 原有索引: 删除索引所需的sql语句:
这时候就只有一个主键索引了: 这时候准备工作都做完了,开始测试! 先来执行一条排序SQL,这时候排序没有用到索引
但是单纯执行上面这条语句的话,只会显示这条语句的执行结果,并不能得知mysql对这条语句的执行计划,所以就用到了mysql中的
所以我们的sql语句改为
可以看到因为排序所用到的条件 再来看一个例子,sql语句为
同样还是使用的排序缓冲区。 那我们该怎么将
创建完索引后,根据age和phone再次进行升序排序,看看执行计划有什么变化
这时候就可以很清楚的看到使用的 这时候就又有一个问题了,
可以从 再来看一种情况,我使用了age和phone作为排序条件,但是吧,我把phone放在前面,age放在后面,这时候还会走索引吗
会发现, 又出现一个问题,我如果根据age和phone进行排序,一个升序,一个降序的话,会
我们在创建索引的时候,如果未指定顺序,默认都是按照升序排序,而查询时,一个升序,一个降序,此时就会出现 为了解决上面的问题,我们可以创建一个索引,这个联合索引中
问题解决,一起来看看升序/降序索引结构图示: 经过上面这么多的测试,可以得出
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 | -2025/5/1 9:51:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |