通过许多左连接提高视图的性能

时间:2012-07-18 12:24:15

标签: sql-server left-join database-performance

我是SQL查询的性能增强的新手,并且给出了为视图增强它的任务。

此视图定义在其上应用了大约20个左连接,我认为这会妨碍性能 - 在本地服务器上检索35K多行需要大约9秒。

提高绩效的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

  1. 考虑是否需要LEFT联接而不是INNER联接。由于不了解所涉及的数据,我们无法给您这样的信息。
  2. 对您的查询运行执行计划。
  3. 识别索引可以提高性能的联接。
  4. 考虑对数据库设计进行反规范化。

答案 1 :(得分:0)

没有看到查询就很难说。提高性能的一种可能方法是为连接中涉及的列创建索引。

如果您查看查询执行计划,您应该能够看到查询的哪个部分正在减慢速度。您还可以通过Database Engine Tuning Advisor运行查询,并允许顾问建议哪些列索引会产生最大的差异。

答案 2 :(得分:0)

您在哪里使用此视图?我建议如果你在proc中使用它或者那样,那么只需在所有视图列中使用几列。很可能这些连接中的一些会被还原,因为它们中的一些甚至不会影响最终结果,并且您不需要加入不必要的表。因此,最好的方法是分析每次调用视图时使用此视图的位置以及正在使用的列以及哪些表具有所需的列。

我建议如果你使用其他proc或类似的视图而不是引用视图引用每个表,只使用那些需要的表。