北京SEO

MySQL ORDER BY排序语句用法与优化

2019/10/10/17:34:07  阅读:1704  来源:谷歌SEO算法  标签: Dropbox

在mysql中ORDER BY keyword是用来给记录中的数据进行分类的,下面我来总结了order by语句利用索引进行优化的方法。

MySQL Order By语法:SELECT column_name(s) FROM table_name ORDER BY column_name

注意:SQL语句是“字母大小写不敏感”的语句,它不区分字母的大小写,即:“ORDER BY”和“order by”是一样的.

MySQL Order By案例

下面的例子,从“Person”表中选取所有记录,并将“Age”列进行分类,代码如下:

  1. <?php
  2. $con=mysql_connect("localhost","peter","abc123");
  3. if(!$con)
  4.  {
  5.  die('Couldnotconnect:'.mysql_error());
  6.  }
  7. mysql_select_db("my_db",$con);
  8. $result=mysql_query("SELECT*FROMpersonORDERBYage");
  9. while($row=mysql_fetch_array($result))
  10.  {//phpfensi.com
  11.  echo$row['FirstName']
  12.  echo"".$row['LastName'];
  13.  echo"".$row['Age'];
  14.  echo"<br/>";
  15.  }
  16. mysql_close($con);
  17. ?>

上面的代码将输出下面的结果:

Glenn Quagmire 33

Peter Griffin 35

按照升序或者降序进行分类排列,如果你使用了“ORDER BY”关键词,所有记录将按照默认的升序进行排列,即,从1到9,从a到z.

使用“DESC”关键词可以制定所有的数据按照降序排列(即,从9到1,从z到a),双击代码全选 123 SELECT column_name(s) FROM table_name ORDER BY column_name DESC.

MySQL Order By根据两列进行分类

很多时候,我们需要同时根据两列内容,或者更多列,来对数据进行分类,当指定的列数多于一列时,仅在第一列的值完全相同时才参考第二列.

双击代码全选 123 SELECT column_name(s) FROM table_name ORDER BY column_name1, column_name2

通过索引优化来实现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;

广告内容

MySQL ORDER BY排序语句用法与优化 MySQL ORDER BY排序语句用法与优化 MySQL ORDER BY排序语句用法与优化

相关阅读

热门评论

小明SEO博客 小明SEO博客

小明SEO博客,新时代SEO博客

总篇数171

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法