【发布时间】:2015-05-19 17:38:48
【问题描述】:
查询 #1 为每个撬块返回数千行。我想知道是否有更快的方法只为每个滑道选择前 10 名。查询 #2 很慢。有什么方法可以优化查询 #1 以使其更快?
查询 #1
select skid, date_run, price, ROW_NUMBER()over(PARTITION BY
skid ORDER BY date_run ASC) as rowid
from stocktrack where rsi is null
查询 #2
with ctevalue
(select skid, date_run, price, ROW_NUMBER()over(PARTITION BY
skid ORDER BY date_run ASC) as rowid
from stocktrack where rsi is null
)
select skid, date_run rowid
from ctevalue
where rowid < 11
【问题讨论】:
-
执行计划是什么样的? stocktrack 表上有哪些索引?
标签: sql sql-server query-optimization sql-server-2014 window-functions