mysql 优化
2016-07-27 12:39
363 查看
SQL语句调优实例锦集
2016-07-23 timy 连接IT总监
怎样加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在 where 及 order by 涉及的列上建立索引。
那一个表是不是索引越多越好,建立索引的方法论,也就是原则是什么呢?
第一:一个表的索引不是越多越好,没有一个具体数字,根据以往经,一
个表的索引最多不超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。
第二:建立索引的方法论为:
a:多数查询经常使用到列
b:很少进行修改操作的列
c:索引需要建立在数据差异化大的列上
1:sql语句模型结构和优化指导
a. ORDER BY + LIMIT组合的索引优化。
ORDER BY [sort] LIMIT [offset],[LIMIT];
这个SQL语句优化比较简单,在[sort]这个栏位上建立索引即可。WHERE [columnX] = [VALUE] ORDER BY [sort] LIMIT [offset],[LIMIT];
这个语句,如果你仍然采用第一个例子中建立索引的方法,虽然可以用到索引,但是效率不高。更高效的方法是建立一个联合索引(columnX,sort)WHERE uid=1 ORDER x,y LIMIT 0,10;
对于这个语句,大家可能是加一个这样的索引:(x,y,uid)。但实际上更好的效果是(uid,x,y)。这是由MySQL处理排序的机制造成的。
2016-07-23 timy 连接IT总监
怎样加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在 where 及 order by 涉及的列上建立索引。
那一个表是不是索引越多越好,建立索引的方法论,也就是原则是什么呢?
第一:一个表的索引不是越多越好,没有一个具体数字,根据以往经,一
个表的索引最多不超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。
第二:建立索引的方法论为:
a:多数查询经常使用到列
b:很少进行修改操作的列
c:索引需要建立在数据差异化大的列上
好了,基于以上的基础,我下面具体讨论sql语句该怎么优化,以及优化的简单示例。往往很多理论和方法论都是建立在一个简单模型基础上,利用简单模型方法论,就能分析出实际环境中的更为复杂的模型。
1:sql语句模型结构和优化指导
a. ORDER BY + LIMIT组合的索引优化。
如果一个SQL语句形如:SELECT [column1],[column2],…. FROM