Order by语句是用来排序的,我们经常用Order by来排序。在这里,我将告诉你使用排序和优化排序。有需要的同学可以参考一下。
MySQL Order By关键字用于对记录中的数据进行分类。MySQL Order By Keyword是根据关键字分类的。Order by关键字用于对记录中的数据进行分类。
复制代码如下:select column _ name 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;
插入到mysql_order_by_test (uid,name,sex)值(1, www.jb51.net ,1);插入MySQL _ order _ by _ test (uid,name,sex)值(2,李四,2);插入mysql _ order _ by _ test (uid,name,sex)值(3,王马尔子,1);
利用索引优化技术优化MySQL的ORDER BY语句:
1.ORDER BY索引优化。如果SQL语句看起来像:
复制代码如下:选择[列1],[列2],…。from[table]order by[sort];
通过在[排序]字段中创建索引,您可以使用索引来优化顺序。
2.WHERE ORDER BY的索引优化,例如:
复制代码如下:选择[列1],[列2],…。from [table]其中[columnx]=[value]order by[sort];
建立联合索引(columnX,sort)实现order by的优化。
注意:如果columnX对应于多个值,例如下面的语句,则索引不能用于优化order by。
复制代码如下:选择[列1],[列2],…。from[table]where[columnx]in([value 1],[value2],…)order by[sort];
3.其中多个字段排序依据
复制代码如下:select * from [table]其中uid=1 order x,y limit 0,10;
建立index (uid,x,y)来优化order by比建立index (x,y,uid)要好得多。
在某些情况下,MySQL可以使用索引来满足ORDER BY子句,而无需额外的排序。其中条件和排序依据使用同一个索引,排序依据的顺序与索引的顺序相同,排序依据的字段都是升序或降序。
例如,下面的sql可以使用索引。
复制代码如下:select * from t1 order by key _ part1,key _ part2,SELECT * FROM t1其中key _ part 1=1 ORDER BY key _ part 1 desc,key _ part 2 desc;SELECT * FROM t1 ORDER BY key _ part 1 desc,key _ part 2 desc;
但是,在下列情况下不使用索引:
复制代码如下:Select * from t1 order by key _ part 1 desc,key _ part2asc-order by字段与ASC和desc混合 select * from t1其中key2=常量order by key1-用于查询行的关键字不同于ORDER BYselect * from t1 ORDER BY key 1,key2-对不同的关键字使用ORDER BY: