国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 句容市| 永平县| 南通市| 正蓝旗| 临江市| 三穗县| 台南市| 玉林市| 辽阳县| 三台县| 景宁| 城步| 元阳县| 九寨沟县| 莫力| 博乐市| 大关县| 慈利县| 忻城县| 大化| 余姚市| 仁寿县| 永仁县| 彭阳县| 赣榆县| 肇东市| 平潭县| 眉山市| 余干县| 柘荣县| 永丰县| 利辛县| 土默特左旗| 吉木萨尔县| 南木林县| 油尖旺区| 河西区| 香港 | 通许县| 溆浦县| 景洪市|