【发布时间】:2015-08-11 07:01:15
【问题描述】:
我不知道我需要创建什么样的索引才能使以下查询不会在执行计划中导致两次排序。
SELECT DISTINCT
col_A,
FIRST_VALUE (col_B) OVER (PARTITION BY col_A ORDER BY col_C DESC) AS x
FROM table_A
表的主键在col_A、col_C上,这是当前的执行计划:
有没有办法摆脱这两种情况?
【问题讨论】:
-
您是否尝试过使用数据库引擎优化顾问?
-
黑暗中的一枪:
CREATE INDEX IDX_xyz ON table_A (col_A, col_C DESC) INCLUDE (col_B) -
我只是不知道你会摆脱两种。直到它完成之后才知道 FIRST_VALUE (col_B)。如果您在 col_A、col_C DESC 上有索引,那应该是一种快速排序。您有性能问题吗?
-
@ZoffDino 不幸的是,这没有用。
-
@Stephan 它没有给我任何建议,但我直到现在才知道这个程序!很好地保留在我的后袋中,以备将来的性能调整需要。
标签: sql-server performance tsql indexing sql-server-2014