2013-07-03 101 views
0

我不知道该怎么称呼它,也许它铺在这里的某个地方,在SO ...优化SQL脚本

我在想哪一个更快,更易于维护..

说我有50个变量,其中每个变量从一个表中获取其值如

SET @Location = SELECT location FROM params WHERE TYPE = 'Param' 

SET @Location = 'D:\OUTBOX\' 

W¯¯这是一个优化,并会在查询执行期间提供一个提升,此外,除了使用SQL分析器+ SQL执行计划外,还有一种方法可以分析查询吗?

+2

在使用小'params'表,或直接把值中的代码之间的性能差异将会非常非常小。可维护性等问题更为重要。我更喜欢使用参数表,所以可以在SQL中而不是在SSIS中更改这些值。 –

+0

如果它不只是一行?如果情况是因为每个变量值都是从一行开始的呢?这基本上意味着你必须做50选择stmt?你会建议把所有的值与50列一行吗? –

+0

。 。 50列几乎没有什么区别。参数表将被加载到内存中,可能在单个页面上。如果你有一个'type'索引,那么查找将会非常快速。速度不如常数,但可能对需要明显(> 100 ms)时间量的脚本无关紧要。 –

回答

0

那么,第二个显然更快,因为它不读取任何数据,但它可以为你工作?这显然难以维持。第一个简单的选择,不应该导致任何性能问题。

如果所有的变量都在表中的同一行,你可以用一个SELECT陈述阅读:

SELECT @Location = location, @Param2 = Column2, @Param3 = Column3 FROM params WHERE TYPE = 'Param' 
+0

如果它不仅仅是一行?如果情况是每一个变量值都是从一行开始的呢?这基本上意味着你必须做50选择stmt?你会建议把所有的值与50列一行吗? –