对mysql的order by及limit优化要适数据情况而定
2010-04-10 18:29
477 查看
以下这篇文章论述上在什么情况下子查询比一般的内连接查询更加快速
http://www.mysqlperformanceblog.com/2010/03/18/when-the-subselect-runs-faster/
以下是我对mysql的order by和limit优化的建议,要适表的数据量和用来过滤列的唯一值的个数而定
(1)where子句中用来过滤结果的列所在索引的cadinality很小,即用相关的列条件过滤所得到的结果集很大时,用子查询更快
形式如:select * from table where column in (select column from table where column=?) order by column_id limit m,n
(2)当过滤所得到的结果集很小时,不用子查询更快(因为如果用子查询,先进行排序,可能排在前面的n条记录全不是满足子查询条件的,因此可能扫描更多的行;但当过滤的结果集很大时,排在前面的满足条件的行出现的机率也大,因此可能扫描更少的行)
形式如:select * from table where column=? order by column_id limit m,n
http://www.mysqlperformanceblog.com/2010/03/18/when-the-subselect-runs-faster/
以下是我对mysql的order by和limit优化的建议,要适表的数据量和用来过滤列的唯一值的个数而定
(1)where子句中用来过滤结果的列所在索引的cadinality很小,即用相关的列条件过滤所得到的结果集很大时,用子查询更快
形式如:select * from table where column in (select column from table where column=?) order by column_id limit m,n
(2)当过滤所得到的结果集很小时,不用子查询更快(因为如果用子查询,先进行排序,可能排在前面的n条记录全不是满足子查询条件的,因此可能扫描更多的行;但当过滤的结果集很大时,排在前面的满足条件的行出现的机率也大,因此可能扫描更少的行)
形式如:select * from table where column=? order by column_id limit m,n
相关文章推荐
- MySQL limit 分页查询优化(数据量非常大的情况)
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- mysql同时使用order by和limit查询时的一个数据丢失
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- 解决Mysql数据量大的时候 分页优化(使用limit)的问题
- MySQL数据分页查询---limit、order by的使用
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- 绕过mysql的id:32933 BUG 实现order by limit 正常取数据.
- 从Yii框架分页数据“丢失”到MySQL的ORDER BY和LIMIT子句
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!
- 在大数据情况下MySQL的一种简单分页优化方法
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)
- mysql快速生成测试数据的方法,以及分页limit语句优化
- MySql带order by与limit的sql优化
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)
- MySQL Limit 性能优化及分页数据性能优化
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍