运行缓慢的视图中的SQL视图

时间:2018-12-17 15:50:25

标签: sql sql-server view

我创建了一个视图,该视图从另一个视图提取数据,并且运行速度非常慢。原始视图运行良好,所以我不确定会发生什么。查询视图时通常会出现问题吗?

2 个答案:

答案 0 :(得分:0)

我做了一些简短的研究,可以得出结论,您将很难维护有效的嵌套视图。简而言之,您的SQL Server查询优化器将花费几乎不可能的时间来弄清楚如何快速执行查询。充其量,它必须执行三个语句:Source语句,View 1,View 2(嵌套)。在表和视图上没有索引的情况下,由于它运行的操作太多,因此性能将持续缓慢。

搜索嵌套视图的替代解决方案会更好,例如从嵌套视图中的第一个视图复制SELECT语句。重复也不太理想,但这意味着您的优化器不必这么费劲。您也可以查看applying indexes to your views。正确完成后,您将在执行SELECT操作时提高INSERT性能,同时牺牲速度。如果您不希望源表更改太频繁,则应该执行此操作,但是如果您无法重组视图布局,则这可能是最好的解决方案。

答案 1 :(得分:0)

可能在内部(快速)视图和外部(慢速)视图上都使用了一些过滤器。 确保在外部视图上使用的过滤器最好“链接”到内部视图。最佳“链接”是指,例如在外部视图中,您可以使用更多表并加入内部视图,并尝试同时与过滤器列或较低详细信息的基础表结合。