gpt4 book ai didi

sql - ROW_NUMBER() 执行计划

转载 作者:行者123 更新时间:2023-12-03 03:27:01 27 4
gpt4 key购买 nike

请考虑此查询:

SELECT num,
*
FROM (
SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate,
ShippedDate,
ROW_NUMBER()
OVER(ORDER BY OrderID) AS num
FROM Orders
) AS numbered
WHERE NUM BETWEEN 0AND 100

当我执行这个查询并获取执行计划时,它是这样的:

execution plan

我想知道

1) SQL Server 2008 通过哪些步骤在查询中添加 ROW_NUMBER()

2) 为什么在执行计划的第一步中我们有聚集索引扫描

3)为什么过滤成本是2%?我的意思是为什么为了获取适当的数据sql server 不执行表扫描? ROW_NUMBER() 是否会导致创建索引?

最佳答案

  1. 计划的分段/序列项目部分与 ROW_NUMBER() 的使用相关。

  2. 您进行了聚集索引扫描,因为内部 SELECT 上没有 WHERE 子句,因此必须返回表的所有行。

  3. 过滤器与外部 SELECT 上的 WHERE 子句相关。

关于sql - ROW_NUMBER() 执行计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916250/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com