我只是想知道多次选择与使用单一选择之间的区别是否有任何性能提升?我看到有人这样做了,我觉得它有点像下面那样失控;
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
VS。
select @a = cBranchName
,@b = cBranchAddress
,@c = dCreateDate
,@d = AssignedCompanyId
,@e = StoreFormat from mstores where nBranchCode = 1
我还假设5个选择对数据库进行5次访问,如何证明单个select语句比5个select语句快,
即使只是通过观察它,我已经认为单一选择语句明显快于多次选择。
答案 0 :(得分:1)
我不希望看到两种方法之间存在显着差异。在方法#1中执行第一个SELECT之后,将存在一个执行计划,数据库引擎可以重新使用其他4个SELECT。并且:该页面可能在此时被缓存,因此不需要返回磁盘。方法#2在2个计数上更为理想:它(更有争议地)更优雅,其次它是单个命令,因此该行将在执行时被锁定。在方法#1中,行可能会在每个SELECT
之间发生变化答案 1 :(得分:1)
主要差异:
我完全不知道为什么有人会有理由认为5个查询会比一个更好。
答案 2 :(得分:0)
对于一个表我认为单个选择应该是数字1选择#,当你处理多个表时,即使然后根据情况单个连接语句比多个选择语句更好
我认为单个语句可以使数据库进行大量优化,因为它可以看到它需要扫描的所有表,减少了开销,并且可以在本地构建结果集。还有一个语句将通常对下一个程序员来说更容易理解和修改
答案 3 :(得分:0)
最简单的方法是测试它以证明它虽然我希望单个表上的一个选择比5便宜。对于需要连接的多个表,单个选择可能更便宜 - 你' d需要使用'explain plan'来提前确定(有时连接不能/不使用单个表选择的索引)。
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.