龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > MySQL 技术 >

MySQL数据库优化

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
MySQL数据库 的 优化 是怎么个情况,别着急,下面就是,大家接着了看。希望大家通过本次的阅读,可以学到东西。 MySQL 如何优化ORDER BY 在一些情况下,MySQL可以直接使用索引来满足一

MySQL数据库优化是怎么个情况,别着急,下面就是,大家接着了看。希望大家通过本次的阅读,可以学到东西。

 MySQL 如何优化ORDER BY

在一些情况下,MySQL可以直接使用索引来满足一个 ORDER BY 或 GROUP BY 子句而无需做额外的排序。

尽管 ORDER BY 不是和索引的顺序准确匹配,索引还是可以被用到,只要不用的索引部分和所有的额外的 ORDER BY字段在WHERE 子句中都被包括了。下列的几个查询都会使用索引来解决 ORDER BY 或 GROUP BY 部分:

SELECT*FROMt1ORDERBYkey_part1,key_part2,...;

SELECT*FROMt1WHEREkey_part1=constantORDERBYkey_part2;

SELECT*FROMt1WHEREkey_part1=constantGROUPBYkey_part2;

SELECT*FROMt1ORDERBYkey_part1DESC,key_part2DESC;

SELECT*FROMt1

WHEREkey_part1=1ORDERBYkey_part1DESC,key_part2DESC;

在另一些情况下,MySQL无法使用索引来满足 ORDER BY,尽管它会使用索引来找到记录来匹配WHERE子句。这些情况如下:

对不同的索引键做 ORDER BY :

SELECT * FROM t1 ORDER BY key1, key2;

在非连续的索引键部分上做 ORDER BY:

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

同时使用了 ASC 和 DESC:

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

用于搜索记录的索引键和做 ORDER BY 的不是同一个:

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

有很多表一起做连接,而且读取的记录中在 ORDER BY 中的字段都不全是来自第一个非常数的表中(也就是说,在EXPLAIN分析的结果中的第一个表的连接类型不是 const)。

使用了不同的 ORDER BY 和 GROUP BY 表达式。

表索引中的记录不是按序存储。例如,HASH 和 HEAP 表就是这样。

文章中详细介绍的就是MySQL对ORDER BY的优化方法,学会了这一点,相信大家在以后的工作中用起来就信手拈来。


精彩图集

赞助商链接