表和视图之间的连接非常慢

时间:2016-10-20 08:16:40

标签: sql sql-server tsql

我有一个视图,在15秒内返回超过100000行。该视图返回一个字段ElementId。我有一个带有主键ID的表元素。

SELECT MV.ElementId 
FROM MyView MV

当我在视图和表之间应用连接时,我的查询非常慢(> 4分钟),如下所示:

SELECT E.Id 
FROM MyView MV 
INNER JOIN Elements E ON E.Id = MV.ElementId
WHERE E.CustomerId = @CustomlerId

为什么两个查询之间的执行时间如此不同?如何优化第二个查询?

我使用SQL Server 2014

3 个答案:

答案 0 :(得分:0)

取决于很多因素:

1st - 对于每个参数或仅针对其中一些参数,此查询是否缓慢? 如果此查询仅对其中一些查询速度较慢,则可以尝试OPTIMIZE FOR UKNOWN功能 - https://blogs.msdn.microsoft.com/sqlprogrammability/2008/11/26/optimize-for-unknown-a-little-known-sql-server-2008-feature/

第二 - 你有关于Elements表的任何索引吗? 如果没有,您可以在elementId列上创建聚簇索引。

如果您能与我们分享执行计划,那将是最好的。

问候!

答案 1 :(得分:-1)

优化您的数据库: 1.调整数据库和表 2.在表中创建索引(在mysql中测试)

答案 2 :(得分:-2)

考虑索引MV.ElementId以及Elements.CustomerId