MySQL排序索引的创建-WHERE和ORDER BY联合索引_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2296 | 回复: 0   主题: MySQL排序索引的创建-WHERE和ORDER BY联合索引        下一篇 
tngou
注册用户
等级:中校
经验:2433
发帖:192
精华:15
注册:2014-4-28
状态:离线
发送短消息息给tngou 加好友    发送短消息息给tngou 发消息
发表于: IP:您无权察看 2014-11-20 17:02:20 | [全部帖] [楼主帖] 楼主   主页

MySQL的索引创建的主要目的就是方便SQL语句的快速查询:

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

MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。

然后索引如果创建却影响着查询的效率和ORDER BY排序和GROUP BY分组

通过索引优化来实现MySQL的ORDER BY语句优化,如下:

1、ORDER BY的索引优化

如果一个SQL语句形如:

SELECT * FROM [TABLE] ORDER BY [a];


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

2、WHERE + ORDER BY的索引优化

形如:

SELECT * FROM [TABLE] WHERE [columnX] = [value] ORDER BY [sort];


建立一个联合索引(columnX,sort)来实现order by 优化。

注意:如果columnX对应多个值,如下面语句就无法利用索引来实现order by的优化

SELECT * 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)索引效果要好得多。

特别提示:

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

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

该贴由hui.chen转至本版2014-11-24 14:26:28




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论