标签:
今天写了一个统计sql,在一个近亿条数据的表上执行,200s都查不出结果。SQL如下:
select customer,count(1) c from upv_** where created between "2015-07-06" and "2015-07-07" group by customer having c > 20 order by c desc
拿着这个SQL去请教项目组的数据库大牛,仅仅加了一个force index,花了1s多就出结果了。修改后的SQL如下:
select customer,count(1) c from upv_jd force index(idx_created) where created between "2015-07-06" and "2015-07-07" group by customer having c > 15 order by c desc
除了磁盘扫描的行数的不一样,还有采用的索引的不用,上面的sql用的是联合索引,而下面的是单纯的created字段的索引。由于用的是created的索引,驱动条件就是created的区间,需要扫描的数据就立刻变小了,因为时间区间小。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/bruce128/article/details/46777567