优化MySQL效率主要几个问题总结

创造于:2010年05月22日11:54 档案在:MySQL 浏览次数:209 作者:liuhui

最近优化MySQL数据库查询过程中,发现集中的性能问题主要在以下几个方面

1,limit条件数太大
实例:select * from test008 limit 10000000,10;
关注点:limit 10000000,10
这类问题的解决方案可从两方面入手,一是考虑功能是否可以优化,查询这样一条数据所消耗的成本与带来的效果是不是值的,二是考虑采用主键进行关系运算符,如id>10000000,但结果可能存在误差。

2,强制索引使用问题
实例:select * from test008 force index(xxidx) where key1 = xx And key2 = xx order by key3 desc limit 10;
关注点:force index(xxidx)
这类问题是为了解决效率问题而产生的新的效率问题,在使用的过程中关键要搞清MySQL根椐条件查询选择的索引与强制索引消耗资源和问题,根椐实际情况指定索引。

3,文件排序的合理性依据
实例:select * from test008  where key1 = xx And key2 = xx order by key3 desc limit 10;
关注点:order by key3 desc
这类问题产生的原因是有索引但采用了文件排序,MySQL自动选择了key1或key2关联字段的索引,如果产生的结果集很小,但使用key2或key3的条件过滤结果集很大,可忽视文件排序。

4,条件查询中IN条件与order by排序同时存在
实例:select * from test008  where key1 in(x1,x2,x3) And key2 = xx order by key3 desc limit 10;
关注点: key1 in(x1,x2,x3) 与 order by key3 desc
这类问题是order by 与 in 组合查询不能走索引产生,如果key1过滤的结果集很大可优先考虑order by。

继续优化MySQL效率问题,不管分析对错与否,实践检验一切。
 

发表一下看法
注册一下,轻松回复,请放心,邮箱严格保密,便于更好沟通
用户名*
邮箱*
个人主页 (带http://)
内容
验证码