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