≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > MySQL

MySQL利用索引优化ORDER BY排序语句的简单示例

人气:272 时间:2021-07-16

这篇文章主要为大家详细介绍了MySQL利用索引优化ORDER BY排序语句的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!

 

创建表&创建索引

 

代码如下:


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

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

在已有的表创建索引语法

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];

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

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

 

2、WHERE + ORDER BY的索引优化

 

形如:

代码如下:



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

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

建立一个联合索引(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;

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

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

 

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

 

 

 

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

 

代码如下:



SELECT * FROM t1 ORDER BY key1, key2;

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

 

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

 

代码如下:



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

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

 

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

 

代码如下:



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

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

 

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

 

代码如下:



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

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

 

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

 

代码如下:



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

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

 

特别提示:

 

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

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

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

本文来自:http://www.q1010.com/177/19533-0.html

注:关于MySQL利用索引优化ORDER BY排序语句的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:

您可能感兴趣的文章

上一篇:shell脚本一键安装MySQL5.7.29的简单示例
下一篇:解决node连接MySQL数据库遇到的问题
热门文章
  • mysql 修改character_set_server为utf-8的简单示例
  • 解决MySQL丢失文件localhost.localdomain.pid、mysql.sock的示例
  • MySQL 数据类型binary和varbinary的简单示例
  • MySQL:reading initial communication packet问题解决方法
  • MySql 表类型MYISAM、InnoDB区别
  • bash: mysql: command not found 的解决方法
  • MYSQL默认用户名ROOT修改方法
  • MySQL 常用命令菜鸟教程
  • MySQL 使用命令行新建用户并授予权限
  • MySql 数据库物理文件存放位置查看示例
  • 最新文章
    • MySQL查看死锁与解除死锁的简单示例
    • MySQL 慢查询的功能实例
    • MySQL查看死锁与去除死锁的简单示例
    • MySQL找出未提交事务的SQL的简单示例
    • MySQL锁阻塞的的简单示例
    • MySQL中的binary类型使用操作的示例
    • SQL优化教程之in与range查询的简单示例
    • MySQL 的 21 个规范、优化最佳实践!
    • MySQL 字符类型大小写敏感的简单示例
    • 解决mybatis-plus分页传入参数后sql where条件没有limit分页信息的问题

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。