首页 > 解决方案 > SQL Server 联合性能

问题描述

我有一个查询,它对不同的数据库执行 2 个视图的联合。单独来说,每个查询都运行得非常快。顶部 8 秒,底部约 22 秒。当我使用连接运行它时,它会在我必须取消它之前运行超过 2 分钟。

什么可能导致这种情况?这是查询:

select *
from v_flash_report
where type in ('Invoice')
union all 
select *
from [BC_BRT_Diamond].[dbo].v_Diamond_Flash
where type in ('Invoice','Cash')

顶部返回大约 14k 行,底部返回 153k 行。

期望整个事物在与 2 个单独加在一起的相同时间内返回是否公平?

这是在 SQL Server 2019 上运行的。

数据库本身是从旧的 SQL Server 2008 数据库恢复的备份。在旧数据库上,联合查询在 47 秒内运行,所以我希望在新数据库上也是如此。SQL Server 在不同版本之间处理此类查询的方式是否存在很大差异?

编辑我还应该提到 v_flash_report 和 v_diamond_flash 都是视图而不是表。

标签: sql-server

解决方案


SELECT *避免使用任何索引。

如果两个查询没有相同的行,请尝试UNION ALL


推荐阅读