www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > > 充電吧
[導讀]Sqlserver數(shù)據(jù)庫分頁查詢一直是Sqlserver的短板,閑來無事,想出幾種方法,假設有表ARTICLE,字段ID、YEAR...(其他省略),數(shù)據(jù)53210條(客戶真實數(shù)據(jù),量不大),分頁查詢

Sqlserver數(shù)據(jù)庫分頁查詢一直是Sqlserver的短板,閑來無事,想出幾種方法,假設有表ARTICLE,字段ID、YEAR...(其他省略),數(shù)據(jù)53210條(客戶真實數(shù)據(jù),量不大),分頁查詢每頁30條,查詢第1500頁(即第45001-45030條數(shù)據(jù)),字段ID聚集索引,YEAR無索引,Sqlserver版本:2008R2

第一種方案、最簡單、普通的方法:


代碼如下:

SELECT?TOP?30?*?FROM?ARTICLE?WHERE?ID?NOT?IN?(SELECT?TOP?45000?ID?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC)?ORDER?BY?YEAR?DESC,ID?DESC

第二種方案:


代碼如下:

SELECT?*?FROM?(SELECT?TOP?30?*?FROM?(SELECT?TOP?45030?*?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC)?f?ORDER?BY?f.YEAR?ASC,?f.ID?DESC)?s?ORDER?BY?s.YEAR?DESC,s.ID?DESC

平均查詢100次所需時間:138S

第三種方案:


代碼如下:

SELECT?*?FROM?ARTICLE?w1,???
(??
????SELECT?TOP?30?ID?FROM???
????(??
????????SELECT?TOP?50030?ID,?YEAR?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC??
????)?w?ORDER?BY?w.YEAR?ASC,?w.ID?ASC??
)?w2?WHERE?w1.ID?=?w2.ID?ORDER?BY?w1.YEAR?DESC,?w1.ID?DESC

平均查詢100次所需時間:21S

第四種方案:

代碼如下:

SELECT?*?FROM?ARTICLE?w1???
????WHERE?ID?in???
????????(??
????????????SELECT?top?30?ID?FROM???
????????????(??
????????????????SELECT?top?45030?ID,?YEAR?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC??
????????????)?w?ORDER?BY?w.YEAR?ASC,?w.ID?ASC??
????????)???
????ORDER?BY?w1.YEAR?DESC,?w1.ID?DESC

平均查詢100次所需時間:20S

第五種方案:


代碼如下:

SELECT?w2.n,?w1.*?FROM?ARTICLE?w1,?(SELECT?TOP?50030?row_number()?OVER?(ORDER?BY?YEAR?DESC,?ID?DESC)?n,?ID?FROM?ARTICLE?)?w2?WHERE?w1.ID?=?w2.ID?AND?w2.n?>?50000?ORDER?BY?w2.n?ASC

平均查詢100次所需時間:15S

查詢第1000-1030條記錄

第一種方案:


代碼如下:

SELECT?TOP?30?*?FROM?ARTICLE?WHERE?ID?NOT?IN(SELECT?TOP?1000?ID?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC)?ORDER?BY?YEAR?DESC,ID?DESC

平均查詢100次所需時間:80s

第二種方案:

代碼如下:

SELECT?*?FROM??(?  SELECT?TOP?30?*?FROM?(SELECT?TOP?1030?*?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC)?f?ORDER?BY?f.YEAR?ASC,?f.ID?DESC)?s?ORDER?BY?s.YEAR?DESC,s.ID?DESC

平均查詢100次所需時間:30S

第三種方案:


代碼如下:

SELECT?*?FROM?ARTICLE?w1,???
(??
????SELECT?TOP?30?ID?FROM???
????(??
????????SELECT?TOP?1030?ID,?YEAR?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC??
????)?w?ORDER?BY?w.YEAR?ASC,?w.ID?ASC??
)?w2?WHERE?w1.ID?=?w2.ID?ORDER?BY?w1.YEAR?DESC,?w1.ID?DESC

平均查詢100次所需時間:12S

第四種方案:


代碼如下:

SELECT?*?FROM?ARTICLE?w1???
????WHERE?ID?in???
????????(??
????????????SELECT?top?30?ID?FROM???
????????????(??
????????????????SELECT?top?1030?ID,?YEAR?FROM?ARTICLE?ORDER?BY?YEAR?DESC,?ID?DESC??
????????????)?w?ORDER?BY?w.YEAR?ASC,?w.ID?ASC??
????????)???
????ORDER?BY?w1.YEAR?DESC,?w1.ID?DESC

平均查詢100次所需時間:13S

第五種方案:

代碼如下:

SELECT?w2.n,?w1.*?FROM?ARTICLE?w1,(?  SELECT?TOP?1030?row_number()?OVER?(ORDER?BY?YEAR?DESC,?ID?DESC)?n,?ID?FROM?ARTICLE)?w2?WHERE?w1.ID?=?w2.ID?AND?w2.n?>?1000?ORDER?BY?w2.n?ASC

平均查詢100次所需時間:14S

???? 由此可見在查詢頁數(shù)靠前時,效率3>4>5>2>1,頁碼靠后時5>4>3>1>2,再根據(jù)用戶習慣,一般用戶的檢索只看最前面幾頁,因此選擇3 4 5方案均可,若綜合考慮方案5是最好的選擇,但是要注意SQL2000不支持row_number()函數(shù),由于時間和條件的限制沒有做更深入、范圍更廣的測試,有興趣的可以仔細研究下。

以下是根據(jù)第四種方案編寫的一個分頁存儲過程:


代碼如下:


[sql]?view plaincopyif?exists?(select?*?from?dbo.sysobjects?where?id?=?object_id(N'[dbo].[sys_Page_v2]')?and?OBJECTPROPERTY(id,?N'IsProcedure')?=?1)?? drop?procedure?[dbo].[sys_Page_v2]?? GO?? CREATE?PROCEDURE?[dbo].[sys_Page_v2]?? @PCount?int?output,????--總頁數(shù)輸出?? @RCount?int?output,????--總記錄數(shù)輸出?? @sys_Table?nvarchar(100),????--查詢表名?? @sys_Key?varchar(50),????????--主鍵?? @sys_Fields?nvarchar(500),????--查詢字段?? @sys_Where?nvarchar(3000),????--查詢條件?? @sys_Order?nvarchar(100),????--排序字段?? @sys_Begin?int,????????--開始位置?? @sys_PageIndex?int,????????--當前頁數(shù)?? @sys_PageSize?int????????--頁大小?? AS?? SET?NOCOUNT?ON?? SET?ANSI_WARNINGS?ON?? IF?@sys_PageSize?<?0?OR?@sys_PageIndex?<?0?? BEGIN?????????? RETURN?? END?? DECLARE?@new_where1?NVARCHAR(3000)?? DECLARE?@new_order1?NVARCHAR(100)?? DECLARE?@new_order2?NVARCHAR(100)?? DECLARE?@Sql?NVARCHAR(4000)?? DECLARE?@SqlCount?NVARCHAR(4000)?? DECLARE?@Top?int?? if(@sys_Begin?<=0)?? ????set?@sys_Begin=0?? else?? ????set?@sys_Begin=@sys_Begin-1?? IF?ISNULL(@sys_Where,'')?=?''?? ????SET?@new_where1?=?'?'?? ELSE?? ????SET?@new_where1?=?'?WHERE?'?+?@sys_Where?? IF?ISNULL(@sys_Order,'')?<>?''??? BEGIN?? ????SET?@new_order1?=?'?ORDER?BY?'?+?Replace(@sys_Order,'desc','')?? ????SET?@new_order1?=?Replace(@new_order1,'asc','desc')?? ????SET?@new_order2?=?'?ORDER?BY?'?+?@sys_Order?? END?? ELSE?? BEGIN?? ????SET?@new_order1?=?'?ORDER?BY?ID?DESC'?? ????SET?@new_order2?=?'?ORDER?BY?ID?ASC'?? END?? SET?@SqlCount?=?'SELECT?@RCount=COUNT(1),@PCount=CEILING((COUNT(1)+0.0)/'?? ????????????+?CAST(@sys_PageSize?AS?NVARCHAR)+')?FROM?'?+?@sys_Table?+?@new_where1?? EXEC?SP_EXECUTESQL?@SqlCount,N'@RCount?INT?OUTPUT,@PCount?INT?OUTPUT',?? ???????????????@RCount?OUTPUT,@PCount?OUTPUT?? IF?@sys_PageIndex?>?CEILING((@RCount+0.0)/@sys_PageSize)????--如果輸入的當前頁數(shù)大于實際總頁數(shù),則把實際總頁數(shù)賦值給當前頁數(shù)?? BEGIN?? ????SET?@sys_PageIndex?=??CEILING((@RCount+0.0)/@sys_PageSize)?? END?? set?@sql?=?'select?'+?@sys_fields?+'?from?'?+?@sys_Table?+?'?w1?'?? ????+?'?where?'+?@sys_Key?+'?in?('?? ????????+'select?top?'+?ltrim(str(@sys_PageSize))?+'?'?+?@sys_Key?+?'?from?'?? ????????+'('?? ????????????+'select?top?'?+?ltrim(STR(@sys_PageSize?*?@sys_PageIndex?+?@sys_Begin))?+?'?'?+?@sys_Key?+?'?FROM?'?? ????????+?@sys_Table?+?@new_where1?+?@new_order2??? ????????+')?w?'?+?@new_order1?? ????+')?'?+?@new_order2?? print(@sql)?? Exec(@sql)?? GO

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關鍵。

關鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅(qū)動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關鍵字: LED 驅(qū)動電源 開關電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅(qū)動電源
關閉