通過聚類索引掃描一個表,總結 "上一條記錄 "中的某個欄位,似乎與在整個表中總結該欄位一樣容易。但是沒有 :( 有什么我可以做的嗎?
create table #Tmp(n int not null primary key)
insert into #Tmp values(0)
declare @k int = 1
while @k < 1024 * 1024 * 32
begin
insert into #Tmp
select n @k #Tmp.
from #Tmp
select @k = @k @k
end end
declare @dummy bigint
declare @d1 datetime = GetDate()
select[/span]。
@dummy = Sum(Convert(bigint, n)
from(bigint, n)
#Tmp
declare @d2 datetime = GetDate()
select[/span]。
@dummy = Sum(convert(bigint, n0)
from(bigint, n0)
(
select
n0 = Lag(n) over ( order by n)
來自的
#Tmp
) as Q
declare @d3 datetime = GetDate()
select Convert(time(3)。@d2 - @d1)。) Convert(time(3) 。@d3 - @d2)
-- 00:00:01.460, 00:00:46.273
drop table #Tmp
uj5u.com熱心網友回復:
使用2019年之前的SQL服務器,你可以通過創建一個帶有columnstore index的假表來利用批處理模式的一些好處。
然而,在創建以下表格之后
create table dbo. bmode (Id int not null)
創建非集群列庫索引CC_BatchModeHack on dbo.bmode (Id)
我可以使用外層連接將其包含在查詢中。實際上,它在查詢中根本沒有發揮任何作用,但卻誘使優化器為視窗函式選擇batch mode
。select @dummy = Sum(Convert(bigint, n0))
from (
select n0 = Lag(n) over (order by n)
from #Tmp
left join bmode on 1=0
)q
結果是執行時間下降到近2秒
uj5u.com熱心網友回復:
...為sql2019...
select。
@dummy = Sum(convert(bigint, n0) * (1 APPROX_COUNT_DISTINCT(n0)-APPROX_COUNT_DISTINCT (n0))
from ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/322153.html
標籤:
下一篇:我想更新mysql表中的資料,如果列store_url值與列site_url完全相等,則將更新列title_modal

