我只是想知道什么做多种选择与使用单一的选择之间也是有差别的任何性能提升? 我看见有人做了,而且我觉得它好像有点失控,如以下;
select @a = cBranchName from mstores where nBranchCode = 1
select @b = cBranchAddress from mstores where nBranchCode = 1
select @c = dCreateDate from mstores where nBranchCode = 1
select @d = AssignedCompanyId from mstores where nBranchCode = 1
select @e = StoreFormat from mstores where nBranchCode = 1
与
select @a = cBranchName
,@b = cBranchAddress
,@c = dCreateDate
,@d = AssignedCompanyId
,@e = StoreFormat from mstores where nBranchCode = 1
我还假定在5选择的使5趟数据库,我怎么能证明一个SELECT语句比5个select语句快,
即使只是看着它,我已经想到了一条SELECT语句是显著比多选择速度更快。
我不希望看到2种方法之间的差异显著。 第一个SELECT在方法#1中执行后执行计划将存在数据库引擎可以重新使用用于其它4点进行选择。 和:页面可能在这一点上,从而回归到磁盘将不需要进行缓存。 方法2是2个字更理想:它的(argueably)更优雅,其次它是一个单一的命令,以便而其正在执行的行会被锁定。 在方法#1这是可能的,该行将每个SELECT之间切换
主要区别:
- 五个往返,而不是一个。 光/电的速度需要这一个护理
- 有研究,解析和执行5个语句没有之一。 你觉得会更快?
- 一致性 - 如果选择之间发生的更新会发生什么情况?
- 你可以很清楚地看到,在工作,如果你表现出的执行计划
我很茫然地明白为什么有人会永远有理由认为5个查询会比一个人好。
为一个表,我认为单选择应该是多少1#的选择,当你正在处理多个表甚至再视情况单独连接语句是更好的那么多个SELECT语句
我认为,一个单一的语句使数据库做了很多的优化,因为它可以看到它需要扫描的所有表,开销被降低,并可以建立结果集locally.and也是一个语句通常更容易下一个程序员理解和修改
最简单的方法就是测试它来证明这一点,虽然我希望在一个表上一个选择会比5.对于其中联接需要多个表的更便宜,也可能是做个人选择更便宜的 - 你需要使用“解释计划”确定的时间提前(有时连接无法/不使用索引,其中一个表中选择的意愿)。
http://msdn.microsoft.com/en-us/library/ms190287.aspx
SET STATISTICS TIME ON;
GO
SELECT ProductID, StartDate, EndDate, StandardCost
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET STATISTICS TIME OFF;
GO
结果:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.
(269 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 2 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.