sql-server - 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 都是视图而不是表。
解决方案
SELECT *
避免使用任何索引。
如果两个查询没有相同的行,请尝试UNION ALL
推荐阅读
- android - 如何使中风在按钮外开始 - android
- php - Laravel 8 显示集合的第 4、第 5 和第 6 个元素
- python - 为什么 discord.py 不让我编辑嵌入?
- c# - 我可以像读取 C# 中的文件一样读取 MemoryStream 吗?
- javascript - 从chart.js中解析的csv向每一列添加不同的点样式
- spring-boot - 如何设置 javax.net.ssl.sessionCacheSize
- indexing - 修复解析错误后,我应该等待谷歌网站管理员多久重新开始抓取和索引?
- java - 在 Android Studio 中,因为 Environment.getExternalStorageDirectory() 可能很快会被删除 如何在根目录中创建文件夹
- flutter - 使用 websocket 连接到 ESP8266
- spring-boot - 如何覆盖 Spring Cloud Stream 的 Jackson ObjectMapper 配置?