读书人

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

发布时间: 2012-07-23 09:42:19 作者: rapoo

两条速度相差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 被骂了号,偶一定记住各位大哥的话

读书人网 >SQL Server

热点推荐