当前位置: 代码迷 >> SQL >> 两条速度相差1350倍儿的sql语句
  详细解决方案

两条速度相差1350倍儿的sql语句

热度:62   发布时间:2016-05-05 14:34:19.0
两条速度相差1350倍的sql语句
select *from RESOURCES where  RES_STATUS = 1 and PLATFORM_FLAG=1 and  RES_ID in    (select RES_ID from DOWNLOADRECORDS where DOWNLOADRECORDS_TIME > DATE_SUB(now(),INTERVAL 7 DAY)     group by RES_ID order by COUNT(*) desc ) limit 1, 10;

?这条语句查处结果需要20250毫秒

  select bb.* from (select * from DOWNLOADRECORDS where DOWNLOADRECORDS_TIME > DATE_SUB(now(),INTERVAL 7 DAY) group by RES_ID order by COUNT(*) desc limit 1,10) as aa,RESOURCES as bb  where aa.RES_ID=bb.RES_ID  and bb.RES_STATUS = 1 and bb.PLATFORM_FLAG=1;

?

这条语句只需要15毫秒

?

?

相同的环境下,查出相同的结果速度相差1000倍

1 楼 houxinyou 2011-12-13  
两个语句好像是不一样的吧?
2 楼 xuehanxin 2011-12-13  
谢谢提醒,那个写博客的时候掉了
3 楼 wilddonkey 2012-01-06  
两种写法都用过,
第一种一般用exists不用in,没感觉性能差异很大啊
不知道你的测试数据量。。。
4 楼 xuehanxin 2012-01-12  
测试数据量一个表是10万多条记录一个是30w记录
5 楼 lei_1021 2012-01-14  
废话,这效率当然不一样了,一个是两张表连接查询,一个是一张表每条记录在另一张表里遍历,效率能一样?
6 楼 xuehanxin 2012-01-29  
被骂了号,偶一定记住各位大哥的话