首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Mysql 索引与排序

Mysql 索引与排序

作者头像
dys
发布2018-04-02 16:02:00
发布2018-04-02 16:02:00
2.3K0
举报
文章被收录于专栏:性能与架构性能与架构

sql 中 order by 排序可能发生2种情况:

1)对应覆盖索引,直接在索引上查询时,就是有序的,不需要另外处理排序

2)没有使用到索引,先取出数据,形成临时表做 file sort

示例目标

取出来的数据本身就是有序的,利用索引来排序

示例分析

例如 有一个商品表,现在想取出某个分类下的商品,按照价格排序

sql :

... where category_id=N order by price

目前只对分类ID做了索引,这时 order by 操作必然进行了单独的排序操作

使用 explain 分析这个sql语句时,会看到:

Extra

Using where;Using filesort

改进

现在添加一个索引,category_id和price 的联合索引

再使用 explain 分析这个sql语句时,会看到:

Extra

Using where

可以看到没再使用filesort,这样就利用了索引来排序,因为按照索引取出来的数据本身有序,order by 操作时用到了索引,一看本身就是有序的,就不再需要file sort操作

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档