我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL利用索引优化ORDER BY排序语句的方法

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL利用索引优化ORDER BY排序语句的方法

创建表&创建索引


create table tbl1 (
id int unique, sname varchar(50),
index tbl1_index_sname(sname desc)
);

在已有的表创建索引语法

create [unique|fulltext|spatial] index 索引名 on 表名(字段名 [长度] [asc|desc]);

MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。

通过索引优化来实现MySQL的ORDER BY语句优化:

1、ORDER BY的索引优化

如果一个SQL语句形如:


SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort];

在[sort]这个栏位上建立索引就可以实现利用索引进行order by 优化。

2、WHERE + ORDER BY的索引优化

形如:


SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [value] ORDER BY [sort];

建立一个联合索引(columnX,sort)来实现order by 优化。

注意:如果columnX对应多个值,如下面语句就无法利用索引来实现order by的优化

SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] IN ([value1],[value2],…) ORDER BY[sort];

3、WHERE+ 多个字段ORDER BY


SELECT * FROM [table] WHERE uid=1 ORDER x,y LIMIT 0,10;

建立索引(uid,x,y)实现order by的优化,比建立(x,y,uid)索引效果要好得多。

MySQL Order By不能使用索引来优化排序的情况

1. 对不同的索引键做 ORDER BY :(key1,key2分别建立索引)


SELECT * FROM t1 ORDER BY key1, key2;

2. 在非连续的索引键部分上做 ORDER BY:(key_part1,key_part2建立联合索引;key2建立索引)


SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2;

3. 同时使用了 ASC 和 DESC:(key_part1,key_part2建立联合索引)


SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

4. 用于搜索记录的索引键和做 ORDER BY 的不是同一个:(key1,key2分别建立索引)


SELECT * FROM t1 WHERE key2=constant ORDER BY key1;

5. 如果在WHERE和ORDER BY的栏位上应用表达式(函数)时,则无法利用索引来实现order by的优化


SELECT * FROM t1 ORDER BY YEAR(logindate) LIMIT 0,10;

特别提示:

1>mysql一次查询只能使用一个索引。如果要对多个字段使用索引,建立复合索引。

2>在ORDER BY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。

以上就是MySQL利用索引优化ORDER BY排序语句的方法的详细内容,更多关于MySQL 优化ORDER BY排序语句的资料请关注自学编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL利用索引优化ORDER BY排序语句的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL利用索引优化ORDER BY排序语句的方法

创建表&创建索引create table tbl1 ( id int unique, sname varchar(50), index tbl1_index_sname(sname desc) );在已有的表创建索引语法create [un
2022-05-24

MySQL索引查询limit offset及排序order by用法

目录引言使用 limit 和 offset 来限制返回的数量1、limit2、offsetorder by 的如下几个用法1、order by 的升序、倒序2、多个字段排序3、按照中文排序引言“ 这是mysql系列笔记的第九篇
2023-05-20

记录MySQL中优化sql语句查询常用的30种方法

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值
记录MySQL中优化sql语句查询常用的30种方法
2014-05-10

编程热搜

目录