语句一: select top 20000 A.id from A where A.id not in (select B.id from B)
语句二: select top 20000 A.id from A
left join B on B.id = A.id and B.id is null
其中,A表中数据有1551118条,B表中有数据12399条。
我想请问一下:哪一条语句的执行效率更高呢?(ps:我自己也做了下测试,测试环境:win7 64位 sql server 2008,可发现每次执行后返回的耗时时间都不一样,是受到网络、本地缓存的影响了吗?如果是的话,那我该怎么做测试呢?)
------解决方案--------------------
先执行DBCC FREEPROCCACHE
然后两个放到同一个页面一起执行,记得先开启执行计划。看看各个所占的百分比
------解决方案--------------------
SET STATISTICS IO ON
SET STATISTICS TIME ON
SET SHOWPLAN_TEXT ON
------解决方案--------------------
如楼上两位大神所言,然后查看执行计划吧
------解决方案--------------------
把执行计划发上来,效率和你表里面的数据大小相关。
空谈sql 性能好不好 是空话,不实际
------解决方案--------------------
一看执行计划;
二看IO读取;
如果相应的索引都建立好了,我会用这种写法:
------解决方案--------------------
你再试试这个
select top 2000 id from
(
select id from A
except
select id from B
) as table
------解决方案--------------------
select top 20000 A.id from A where not exists (select 1 from b where B.id=A.id)这个比较好