查询#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
答案 0 :(得分:0)
你试过吗
select
*
from
(select
skid, date_run, price, ROW_NUMBER() over (PARTITION BY skid ORDER BY date_run ASC) as rowid
from
stocktrack where rsi is null) data
where
data.rowid < 11
希望这有帮助
答案 1 :(得分:0)
尝试使用cross apply
:
select st.skid, st.date_run, st.price
from sktable sk cross apply
(select top 10 st.*
from stocktrack st2
where st2.skid = sk.skid and
order by date_run asc
) st
以及stocktrack(skid, date_run, price)
上的索引。
第一个表格是skid
所指的位置。如有必要,您可以尝试(select distinct skid from stocktrack st)
。