SELECT TOP 1000 * FROM [in4].[dbo].[yonghubiao]
where gonghao='123456'
union all
SELECT TOP 1000 * FROM [in4].[dbo].[yonghubiao]
where gonghao='23456'
union all
SELECT TOP 1000 * FROM [in4].[dbo].[yonghubiao]
where gonghao='456789'
与这句SELECT TOP 1000 * FROM [in4].[dbo].[yonghubiao]
where gonghao in ('123456' ,'23456', '456789')
哪句的效率相对高一点?
表里有5000条数据,有33列
我看执行计划里
第一种:
表 'yonghubiao'。扫描计数 3,逻辑读 708 次,物理读 0 次,预读 0 次。(2 行受影响)(9 行受影响)第二种:
表 'yonghubiao'。扫描计数 1,逻辑读 236 次,物理读 0 次,预读 0 次。(2 行受影响)(4 行受影响)
看起来应该是第二种的效率更高些,是不是?
如果top n的n远大于实际记录,完全可以不用top n的
这样2个语句可能会被自动优化为一样的了
sql server 2008
http://topic.csdn.net/u/20091114/18/5b7ba5ee-5683-4625-a50d-3602b70d273d.html
这个是我上次问的,结果回答的不一样
SELECT *
FROM [in4].[dbo].[yonghubiao]
where gonghao ='10975' or gonghao='10154' or gonghao='456789'和
SELECT TOP 1000 * FROM [in4].[dbo].[yonghubiao]
where gonghao in ('123456' ,'23456', '456789')
结果是一样的:
表 'yonghubiao'。扫描计数 1,逻辑读 236 次,物理读 0 次,预读 0 次。(2 行受影响)(3 行受影响)