SQL中Group分組獲取Top N方法實(shí)現(xiàn)可首選row_number建站
導(dǎo)讀:1建站知識統(tǒng)計(jì)每個(gè)城市的最新10個(gè)產(chǎn)品本文采用了游標(biāo)方法/Count查詢/cross apply方法/row_number方法等等對比不難發(fā)現(xiàn)Group獲取Top網(wǎng)站建設(shè)網(wǎng)站建設(shè)多少錢。
有產(chǎn)品表,包含網(wǎng)站seo優(yōu)化診斷工具id,name,city,addtime四個(gè)字段,因報(bào)表需要按城市分組,統(tǒng)計(jì)每個(gè)城市的最新10個(gè)產(chǎn)品,便向該表中插入了100萬數(shù)據(jù),做了如下系列測試:
復(fù)制代碼 代碼如下:
CREATE TABLE [dbo].[products]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50) NULL, [addtime] [datetime] NULL, [city] [nvarchar](10) NULL, CONSTRAINT [PK_products] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
1、采用row_number方法,執(zhí)行5次,平均下來8秒左右,速度最快。復(fù)制代碼 代碼如下:
select no, id,name,city from (select no =row_number() over (partition by city order by addtimseo網(wǎng)站優(yōu)化e desc), * from products)t where no< 11 order by city asc,addtime desc
2、采用cross apply方法,執(zhí)行了3次,基本都在3分5秒以上,已經(jīng)很慢了。復(fù)制代碼 代碼如下:
select distinct b.id,b.name,b.city from products a cross apply (select top 10 * from products where city = a.city order by addtime desc) b
3、采用Count查詢,只執(zhí)行了兩次,第一次執(zhí)行到5分鐘時(shí),取消任務(wù)執(zhí)行了;第二次執(zhí)行到13分鐘時(shí),沒有hold住又直接停止了,實(shí)在無法忍受。復(fù)制代碼 代碼如下:
select id,name,city from products a where ( select count(city) from products where a.city = city and addtime>a.addtime) < 10 order by city asc,addtime desc
4、采用游標(biāo)方法,這個(gè)最后測試的,執(zhí)行了5次,每次都是10秒完成,感覺還不錯(cuò)。復(fù)制代碼 代碼如下:
declare @city nvarchar(10) create table #Top(id int,name nvarchar(50),city nvarchar(10),addtime datetime) declare mycursor cursor for select distinct city from products order by city asc open mycursor fetch next from mycursor into @city while @@fetch_status =0 begin insert into #Top select top 10 id,name,city,addtime from products where city = @city fetch next from mycursor into @city end close mycursor deallocate 網(wǎng)站建設(shè)教程mycursor Select * from #Top order by city asc,addtime desc drop table #Top
通過上述對比不難發(fā)現(xiàn),在面臨Group獲取Top N場景時(shí),可以首選row_number,游標(biāo)cursor其次,另外兩個(gè)就基本不考慮了,數(shù)據(jù)量大的時(shí)候根本沒法使用。相關(guān)網(wǎng)站建設(shè)網(wǎng)站建設(shè)多少錢。聲明: 本文由我的SEOUC技術(shù)文章主頁發(fā)布于:2023-05-24 ,文章SQL中Group分組獲取Top N方法實(shí)現(xiàn)可首選row_number建站主要講述首選,標(biāo)簽,SQL網(wǎng)站建設(shè)源碼以及服務(wù)器配置搭建相關(guān)技術(shù)文章。轉(zhuǎn)載請保留鏈接: http://www.bifwcx.com/article/web_6489.html
- 上一篇:Oracle解鎖的方式介紹建站知識
- 下一篇:百家號什么是保留款,怎么修改?建站知識
為你推薦與SQL中Group分組獲取Top N方法實(shí)現(xiàn)可首選row_number建站相關(guān)的文章
-
通王TWCMS 2.0.3網(wǎng)站模板程序下載
(126)人喜歡 2024-01-15 -
Windows官方原版在哪里下載
(175)人喜歡 2024-01-15 -
WordPress網(wǎng)站模板發(fā)帖標(biāo)題顏色設(shè)置
(131)人喜歡 2024-01-07 -
修改discuz論壇帖子標(biāo)題80字符的長度限制
(249)人喜歡 2024-01-07 -
wordpress程序調(diào)用不帶超鏈接的Tag標(biāo)簽
(234)人喜歡 2024-01-05 -
網(wǎng)站在不同時(shí)期需調(diào)整內(nèi)容更新的方向
(112)人喜歡 2023-08-12