在我的MS Sql Server数据库中,有4个视图,它们都相当快(少于2秒),并且返回的数据都少于50行。
但是,当我创建一个连接这4个视图的查询时(左外连接),我得到一个几乎需要一分钟才能完成的查询。
我认为查询优化器在这里做得很糟糕,有没有什么方法可以加快这个速度。我很想把4个视图中的每一个都复制到一个表中,然后把它们连接在一起,但这对我来说似乎是一个太多变通的办法。
(注:我不能在任何表上设置任何索引,因为视图来自不同的数据库,我不允许在那里改变任何东西,所以这不是一个选项)
编辑: 我很抱歉,但我不认为贴出sql查询会有帮助。它们相当复杂,使用了大约50个不同的表。我也不能发布执行计划,因为我没有足够的访问权限来生成某些数据库的执行计划。
我想我现在最好的解决办法是生成临时表来存储每个查询的结果。
如果你不能碰索引,为了加快速度,你可以把4个查询的结果放在4个临时表里,然后连接它们。
你可以在一个存储过程中这样做。