mysql order by 索引名字_MySQL如何利用索引优化ORDER BY排序语句

MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度。

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不能使用索引来优化排序的情况

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

SELECT * FROM t1 ORDER BY key1, key2;

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

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

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

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

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

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

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

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

特别提示:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YAML/Properties配置文件与Spring Boot(转)

多年来,Java开发人员依赖于属性文件或xml文件来指定应用程序配置。在企业应用程序中,人们可以为每个环境(如开发,分段和生产)创建单独的文件,以定义相应环境的属性。但是,通过Spring引导&#x…

嵌入式杂谈之makefile补充

我看了下自己的文章库存,好像还没有一篇关于Makefile的文章,所以这篇刚好可以弥补自己的缺失。makefile预定义变量预定义变量即系统自带的变量预定义变量作用AR库文件维护程序的名称,默认为arAS汇编程序的名称,默认为asCCc编译器的…

Weex 解决Print: Entry, :CFBundleIdentifier, Does Not Exist 错误方法

一、原因 导致这个错误的原因是我们的/user/你的用户名/.rncache文件中 boost_1_63_0.tar.gz文件内容不完整导致 如果你也玩过React-native框架,在0.45版本之后也会出现这个错误。 解决方法: 1、重新下载一个boost_1_63_0.tar.gz文件,替换它&…

mysql表单查询_表单查询实例

[TOC]### 1.查找部门30中员工的详细信息。select * from emp where deptno 30;### 2.找出从事clerk工作的员工的编号、姓名、部门号。select empno,ename,deptno from emp where job clerk;### 3.检索出奖金多于基本工资的员工信息。select * from emp where comm > sal;#…

安卓9.0马达框架分析

前言最近需要将之前的一些驱动接口转为安卓标准接口,方便上层应用或者第三方应用去适配。这篇文章先从简单的马达框架入手进行讲解。正文整个马达框架比较简单,安卓官方已经帮我们实现了framework到HAL层,我们需要实现的就只有驱动层。这篇文…

PYQT4 Python GUI 编写与 打包.exe程序

工作中需要开发一个小工具,简单的UI界面可以很好的提高工具的实用性,由此开启了我的第一次GUI开发之旅,下面将自己学习的心得记录一下,也做为学习笔记吧!!! 参考:http://www.qaulau.…

在MySQL中以下属于ddl语句的_ddl语言(以下哪些命令是ddl语句)

DDL一般指数据定义语言。数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。常见的DDL语句:创建数据库.dml触发器 就是普通的 insert / update / delete 触发器。ddl触发器 就是一些特有的 ddl 语句的触发…

你知道嵌入式,那你看过这个吗?

大家好,因为最近各种原因,我身边的很多同事都转行摆地摊了,可能因为那是一份自由的职业,摆地摊可以从事的范围很广,也不用起早贪黑了,而且收入并不低。也是因为这样,很多嵌入式方面的岗位越来越…

mysql把select结果存到变量中_mysql实例 select into保存到变量的例子

本节继续分享mysql中使用select into保存查询结果到变量中的实例。代码:mysql>mysql> CREATE TABLE Employee( //创建雇员表-> id int,-> first_name VARCHAR(15),-> last_name VARCHAR(15),-> start_date DATE,-> end_date DATE,-> salary…

mvc一对多模型表单的快速构建

功能需求描述 Q:在实际的开发中,经常会遇到一个模型中包含有多个条目的表单。如何将数据提交到后台? A: 以数组的形式提交到后台就Ok了(真的那么简单么,如果再嵌套一层呢?) A2:拆分多个模型,映射就没啥问题…

asp删除mysql_asp php 清空access mysql mssql数据库的代码

1、ASP清空ACCESSDim Rs,ConnSet ConnServer.CreateObject("Adodb.Connection")Conn.Open "ProviderMicrosoft.Jet.OLEDB.4.0;Data Source"&server.mappath("readlog.mdb")Set RsConn.OpenSchema(20)Do While not Rs.EofIf Ucase(Rs("T…

c语言中 if(x) 、if(0) 、if(1)

解释if 语句里面包含真和非真&#xff0c;但是如果我们没有写清楚真和非真的话&#xff0c;会如何呢&#xff1f;if(x)相当于if(x ! 0)如果是指针的话&#xff0c;相当于if(x ! NULL)而if(1)相当于if(1 ! 0)还有if(0)相当于if(0 ! 0)举个例子#include<stdio.h> int main(…

接口总结

1.接口定义&#xff1a; ①Java接口是一系列方法的声明&#xff0c;是一些抽象的集合。 ②一个接口只有抽象方法没有方法的实现&#xff0c;因此这些方法可以在不同的地方被不同的类实现&#xff0c;而这些实现可以具有不同的行为&#xff08;功能&#xff09;。 ③简单地说&am…

mysql concat $_mysql concat 的诡异问题

在存储过程中&#xff0c;mysql 中的 concat 函数&#xff0c;总是出现问题&#xff0c;不知道是毛&#xff1f;DROP PROCEDURE IF EXISTS TestPro;CREATE PROCEDURE TestPro()BEGIN-- SET tableName "_aaaa,_bbbb,_cccc,_dddd";SET tableName "_aaaaa,_bbbb,…

看Linus骂人,真解气

感受下Linus骂人的感觉吧&#xff0c; 这样你会觉得工作中遇到的那些不愉快就算个鸟事背景一个Linux主线的内核维护者提交了一份patch&#xff0c;并说明问题产生的原因是因为应用传的音频有问题。Linus回复如下你他娘的给老子闭嘴&#xff01;这是一个内核bug好不好&#xff0…

Vim直接打开Tampermonkey网址的方法。

根据tampermonkey利用require调用本地脚本的方法&#xff0c;比如我电脑上保存了Tampermonkey脚本a.user.js和它调用的a.js&#xff0c; 想在Vim编辑这两个文件时&#xff0c;都能一键打开网页里的a脚本&#xff0c;网址格式是&#xff1a;chrome-extension://dhdgffkkebhmkfjo…

不就是要个30K的薪资,他还问我Nginx调优

我是一个运维“老鸟”&#xff0c;目前在到处找工作阶段。周三刚面试完一家公司&#xff0c;还是非常中意的公司。结果是我中意公司&#xff0c;公司不中意我&#xff0c;妥妥的黄了。面试完我才知道&#xff0c;Linux云计算工程师必须能精通20多个企业级服务器优化。我之前不是…

android导出apk文件_Android测试工具入门介绍(三)

介绍一款牛逼的测试框架Drozer&#xff0c;一款可以检测Android一些公共漏洞的工具&#xff08;可能远不止这些、还可以继续挖掘&#xff09;&#xff0c;还可以生成shellcode&#xff0c;进行安卓设备的远程exploit。附下载地址&#xff1a;https://github.com/mwrlabs/drozer…

bomb炸弹

今天看到的一个Linux shell命令&#xff0c;但是我先说下&#xff0c;这个命令是危险的&#xff0c;所以没事的时候不要随便执行&#xff0c;出现了各种危险不要怪我没有提前告诉你哈。DANGER!命令代码:(){ :|: & };:命令解析1:() 意思是定义了一个函数&#xff0c;这个函数…

kindle的xray怎么用_Xray简单使用教程

Xray简单使用教程0X00下载xray 为单文件二进制文件&#xff0c;无依赖&#xff0c;也无需安装&#xff0c;下载后直接使用。下载地址为&#xff1a;注意&#xff1a; 不要直接 clone 仓库&#xff0c;xray 并不开源&#xff0c;仓库内不含源代码&#xff0c;直接下载构建的二进…