国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

存儲過程分頁又一方法(使用table變量)(摘)

2024-07-21 02:06:31
字體:
來源:轉載
供稿:網友
要創建一個返回指定條記錄結果的存儲過程,首先必須指定返回結果集的條記錄數,可以用臨時表,也可以用table變量(sql server 2000),兩個在性能上沒有太大的差別,但是,table變量是存儲在內存中的,如果你的服務器內存不多的話,可以考慮用臨時表,臨時表使用硬盤存儲結果,臨時表需要手工釋放對象,而table變量在存儲過程結束后自動釋放。
    下面就是我們要創建的存儲過程:

create proc getauthors
@author_last_name as varchar(100) = null,
@startrow as int = null,
@stoprow as int = null
as

---- 建立有標識符列的table變量
declare @t_table table
(
[rownum] [int] identity (1, 1) primary key not null ,
[author_last_name] [varchar] (40) ,
[author_first_name] [varchar] (20) ,
[phone] [char] (12) ,
[address] [varchar] (40) ,
[city] [varchar] (20) ,
[state] [char] (2) ,
[zip] [char] (5)
)

---- 在返回指定的@stoprow行數之后停止處理查詢
set rowcount @stoprow

---- 插入到table變量中
insert @t_table
(
[author_last_name],[author_first_name],[phone],[address],[city],[state],[zip]
)
select [author_last_name],[author_first_name],[phone],[address],[city],[state],[zip]

from authors
where author_last_name like '%' + @author_last_name + '%'
order by author_last_name

---- 返回到正確的結果
select * from @t_table where rownum >= @startrow
order by rownum

go

    參數@startrow和@stoprow接收整數值,代表要返回的開始記錄和結束記錄,如果要在一個25條記錄的頁面中返回第4頁,我們就可以設置@startrow為76,@stoprow為100。我們在table變量@t_table中定義了一個叫rownum的整數類型的列,并指定為標識符列,這個列在我們這里介紹的分頁技術中是很重要的,當我們插入數據時,這個列自動增加,它將在插入數據時起排序作用。set rowcount語句對優化性能很關鍵,它告訴sql server進行限制要插入的數據,如果我們要76-100條記錄之間的數據,那么就可以不必插入大于100條記錄的數據。最后的sql語句從@t_table的table變量選擇rownum大于或者等于@startrow的那些數據集,然后把它們返回到web服務器,由web服務器綁定到datagrid對象。值得注意的是:如果要得到76到100條記錄的數據,我們必須往table變量中插入100條記錄的數據,這意味著:如果瀏覽者請求的頁數越來越大,頁面性能也會有所下降的。例如:要顯示第100頁的數據(從第2451條記錄到第2500條記錄),我們必須先向table變量或者臨時表填充2500條記錄,因此,性能依賴于你計算機的硬件和你要返回的記錄數,有測試表明,在sql server 2000中使用這樣的存儲過程平均在200-250毫秒內返回第100頁,而返回第一頁只需要4毫秒。即使返回第500頁的數據(從第12451到12500條記錄)也可以在650到750毫秒內完成。應該說這種情況是很少見到的。 但為了減輕數據庫和網絡傳輸的壓力,設計合理的查詢結果頁數是很見效的。

摘自http://dotnet.aspx.cc/showdetail.aspx?id=108b1516-53ce-4357-b061-17295af9689f


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍州市| 谷城县| 婺源县| 汝南县| 峡江县| 河间市| 南岸区| 洞头县| 太仆寺旗| 哈密市| 明光市| 伊春市| 来凤县| 佛教| 七台河市| 遂宁市| 枣强县| 宁武县| 延庆县| 蕉岭县| 丰台区| 确山县| 朝阳县| 临泉县| 宣武区| 岑溪市| 安阳市| 泸定县| 新绛县| 平阳县| 蒙阴县| 清新县| 石阡县| 子洲县| 吴旗县| 介休市| 河南省| 长子县| 沈丘县| 拜城县| 盐津县|