sql - TOP 如何影响 SQL 性能
问题描述
我在这里有点茫然。我有两个几乎相同的查询:
select
top 301
*
from
view
where
columnA like '%val%'
and
columnB > '12/12/2019 00:00:00'
order by
columnC
和
select
*
from
view
where
columnA like '%val%'
and
columnB > '12/12/2019 00:00:00'
order by
columnC
当我运行这两个查询时,它们可以正常使用提供的日期。如果我回顾一下历史,第一个查询将有效地使我的应用程序超时,但第二个查询工作正常。
我做了一些故障排除,看来以下情况必须为真,才能使应用程序超时。
- top # 必须包括在内
- order by 必须开启
columnC
columnB
必须足够远在过去。
由于我的应用程序的设置方式,查询设置将始终包含这三个元素,并且我无法将这些元素中的任何一个移动到视图本身,因此它们将始终是全表扫描。
我正在尝试优化我的视图,但我根本不明白在查询中添加 top # 是如何导致应用程序超时的。任何了解 top 如何影响 SQL 性能的帮助将不胜感激。
补充说明:
我注意到添加 TOP 确实会稍微改变执行计划。我在两者中看到的最大区别是,如果没有 top,执行计划几乎在每个连接上都运行并行,而对于包含 top 的查询则不是这种情况。
解决方案
推荐阅读
- c# - SQL - 从连接表中检索列
- python-3.x - 使用 re.compile 的正则表达式
- c++ - 使用三元语句时遇到问题
- symfony - 未捕获的错误:路由“_wdt”不存在
- python - 将 pandas 数据帧批量转换为 protobuf
- css - 在 vuetify 网格中居中 n 数量的 v-col 并增加间距
- python - 如何在sklearn GMM中获得每次迭代的对数似然?
- python - 将 RevitAPI.dll 添加到 Visual Studio
- java - 交换双向链表中的节点组
- intro.js - 在 intro.js 的最后一步之后,onbeforechange 导致错误