mysql 优化代码_MySQL Order by 语句优化代码详解

Order by语句是用来排序的,经常我们会使用到Order by来进行排序,下面我给大家来讲讲Order by用法与优化排序,有需要的同学可参考

MySQL Order By keyword是用来给记录中的数据进行分类的。

MySQL Order By Keyword根据关键词分类

ORDER BY keyword是用来给记录中的数据进行分类的。SELECT column_name(s)

FROM table_name

ORDER BY column_name

例子

SQL创建代码:CREATE TABLE IF NOT EXISTS mysql_order_by_test (

uid int(10) NOT NULL AUTO_INCREMENT,

name char(80) NOT NULL,

sex tinyint(1) NOT NULL,

KEY uid (uid)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO mysql_order_by_test (uid, name, sex) VALUES(1, 'www.jb51.net', 1);

INSERT INTO mysql_order_by_test (uid, name, sex) VALUES(2, '李四', 2);

INSERT INTO mysql_order_by_test (uid, name, sex) VALUES(3, '王二麻子', 1);

通过索引优化来实现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 BYSELECT * FROM [table] WHERE uid=1 ORDER x,y LIMIT 0,10;

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

在某些情况中,MySQL可以使用一个索引来满足ORDER BY子句,而不需要额外的排序。where条件和order by使用相同的索引,并且order by的顺序和索引顺序相同,并且order by的字段都是升序或者都是降序。

例如:下列sql可以使用索引。SELECT * FROM t1 ORDER BY key_part1,key_part2,... ;

SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;

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

但是以下情况不使用索引:①SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

--order by的字段混合ASC和DESC

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

--用于查询

行的关键字与ORDER BY中所使用的不相同

③SELECT * FROM t1 ORDER BY key1, key2;

--对不同的关键字使用ORDER BY:

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

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

相关文章

java.lang.class_关于Java.lang.Class的一些疑问

User.class可以在编译时就确定下来Class的泛型,而new User().getClass()实际上是运行时才能确定下来实际是什么泛型。举个例子:public class User{}public class Student extends User{public static void main(String[] args) {User user1 new User();…

java文件 linux_Linux执行Java文件

最近学习shell脚本,写个简单java类让linux去执行java类没别的东西,就引了一个fastjson的jar,写了个main方法 序列化一个User对象 打印package com.lws.demo;import java.util.Date;import com.alibaba.fastjson.JSONObject;import com.lws.mo…

java 刽子手游戏_java基础(九):容器

集合的引入List (ArrayList LinkedList)Set (HashSet LinkedHashSet TreeSet )Map (HashMap LinkedHashMap TreeMap)CollectionsIterator使用泛型1.为什么使用集合而不是数组?集合和数组相似点都可以存储多个对象,对外作为一个整体存在数组的缺点长度必须…

java面试手写单链表_(转)面试大总结之一:Java搞定面试中的链表题目

packageLinkedListSummary;importjava.util.HashMap;importjava.util.Stack;/*** http://blog.csdn.net/luckyxiaoqiang/article/details/7393134 轻松搞定面试中的链表题目* http://www.cnblogs.com/jax/archive/2009/12/11/1621504.html 算法大全(1)单链表** 目录&#xff1a…

ccf认证俄罗斯方块java_CCF认证历年试题 - osc_h3robkrt的个人空间 - OSCHINA - 中文开源技术交流社区...

CCF认证历年试题不加索引整理会死星人orz第一题:CCF201712-1 最小差值(100分)CCF201703-1 分蛋糕(100分)CCF201612-1 中间数(100分)CCF201609-1 最大波动(100分)CCF201604-1 折点计数(100分)CCF201509-1 数列分段(100分)CCF201503-1 图像旋转(100分)CCF201412-1 门禁…

mysql 变量作表名查询_使用MySQL函数变量作为表名查询

我需要有一个表中增加一定的ID(如AUTO_INCREMENT)函数使用MySQL函数变量作为表名查询我有水木清华这样DELIMITER $$DROP FUNCTION IF EXISTS GetNextID$$CREATE FUNCTION GetNextID(tblName TEXT, increment INT)RETURNS INTDETERMINISTICBEGINDECLARE NextID INT;SELECT MAX(c…

java 签名 ecdsa_Java实现ECDSA签名算法

ECDSA签名算法package com.albedo.security;/*** DSA 加解密实现*/public class ECDSAUtils extends Base {//字符编码public static final String ALGORITHM "EC";public static final String SIGN_ALGORITHM "SHA1withECDSA";/*** ECDSA 验签** param …

java异常处理方式推荐做法_谈谈Java异常处理这件事儿

此文已由作者谢蕾授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。前言我们对于“异常处理”这个词并不陌生,众多框架和库在异常处理方面都提供了便利,但是对于何种处理才是最佳实践,也是众说纷纭。异常处…

as400和java的区别_文件传输协议和AS400

我目前收到以下错误:远程服务器返回错误:(501)参数或参数中的语法错误 .我已经检查了服务器并且文件确实存在,如果我打开命令提示符并键入以下代码它可以工作:ftpopen 192.168.1.2cd /Imagesget S12345.jpeg这是正常的&#xff0c…

java中同时两人提交数据_如何一起发送JSON请求和发布表单数据请求?

所以这是一个应该在POST请求中接受以下参数的API:token (as form data)apiKey (as form data){"notification": {"id": 1,"heading": "some heading","subheading": "some subheading","image&qu…

java 64内存不足_请教一个 Java 内存占用的问题

第 1 条附言 364 天前2020-03-04 01:08:55.525 [HikariPool-1 housekeeper] WARN c.z.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta1m5s643ms48?s450ns).2020-03-04 01:09:08.516 [task-11] ERROR o.s.s.s.TaskU…

java 抽象类 final_final/抽象类/interface

lesson Thirteen                          2018-05-10 02:10:43final:最终的,可以修饰类、属性、方法1.final修饰类:这个类就不能被继承,如:String类,StringBuffer类,System类1…

java char i=2+#039;2#039;;_P039 二维数组的字符按列存放到字符串中 ★★

所属年份:2010.9;2011.9;2012.3请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为W W W WS S S SH H H H则字符串中的内容应是:WSHWSHWSHWSH。#include#define M 3#d…

java io中断_JDK源码阅读:InterruptibleChannel 与可中断 IO

来源:木杉的博客 ,imushan.com/2018/08/01/java/language/JDK源码阅读-InterruptibleChannel与可中断IO/Java传统IO是不支持中断的,所以如果代码在read/write等操作阻塞的话,是无法被中断的。这就无法和Thead的interrupt模型配合使…

java值栈_Struts2学习笔记-Value Stack(值栈)和OGNL表达式

只是本人的Struts2学习笔记,关于Value Stack(值栈)和OGNL表达式,把我知道的都说出来,希望对大家有用。一,值栈的作用记录处理当前请求的action的数据。二,小例子有两个action:Action1和Action2Action1有两个…

php项目实战流程_一个完整的php流程管理实例代码分享

1. 添加新流程页面:请选择流程节点:session_start();include("../DBDA.class.php");$db new DBDA();$suser "select * from users";$auser $db->Query($suser);foreach($auser as $v){echo " {$v[2]} ";}?>$att…

php cdata,PHPcdata处理(详细介绍)_PHP教程

PHPcdata处理(详细介绍)_PHP教程当时在网上找了一个CDATA的转换器, 修改之后, 将CDATA标签给过滤掉。如下代码如下:// States://// out// // // // // // // // in// ]// ]]//// (Yes, the states a represented by strings.)//$state out;$a s…

PHP 与go 通讯,Golang和php通信

不同语言之间的通信方式有很多种,这里我介绍一种最简单通信方式,json-rpc。Golang自带json-rpc包,使用起来十分简单,示例如下,提供一个简单echo server。package mainimport ("fmt""net""net…

php 接口日志,PHP 开发 APP 接口--错误日志接口

APP 上线以后可能遇到的问题:① APP 强退② 数据加载失败③ APP 潜在问题错误日志需要记录的内容数据表 error_log 字段:idapp_id:app 类别 iddid:客户端设备号version_id:版本号version_mini:小版本号erro…

php 空模块,tp5.1配置空模块,空方法

config/app.php//默认的空模块名empty_module>index,controller/Error.php<?php namespace app\index\controller;use Env;use think\Controller;class Error extends Controller {//Db::connect(db_ck)//全局MISS路由 在route.php里面设置找不到控制器默认处理//Route:…