[數(shù)據(jù)庫] 通用分頁存儲過程第2/5頁
更新時間:2007年02月09日 00:00:00 作者:
臨時表
首先,我準備先來說一下臨時表方法,這是一個廣泛被建議使用的解決方案,我在項目中遇到過好幾次了,這里有另一篇解釋它如何工作的文章,還有一個如何在DataGrid中是用定制化分頁(Custom Paging)的例子:
ASP.NET DataGrid分頁 第二部分 – 定制化分頁
這兩篇文章中的方法都是通過把主鍵數(shù)據(jù)拷貝到臨時表中,然后對主查詢做join實現(xiàn)查詢優(yōu)化。下面讓我們來看看這個方法的實質:
復制代碼 代碼如下:
CREATE TABLE #Temp (
ID int IDENTITY PRIMARY KEY,
PK /* here goes PK type */
)
INSERT INTO #Temp SELECT PK FROM Table ORDER BY SortColumn
SELECT FROM Table JOIN #Temp temp ON Table.PK = temp.PK ORDER BY temp.ID
WHERE ID > @StartRow AND ID < @EndRow
通過把所有的行拷貝到臨時表中,我們可以對查詢進一步的優(yōu)化(SELECT TOP EndRow …),但是關鍵在于最壞情況——一個包含100萬記錄的表就會產生一個100萬條記錄的臨時表。考慮到這樣的情況,再看看上面文章的結果,我決定在我的測試中放棄該方法
相關文章
一次數(shù)據(jù)庫查詢超時優(yōu)化問題的實戰(zhàn)記錄
當MySQL服務器出現(xiàn)異常(慢),首先要考慮是否因SQL語句引起數(shù)據(jù)庫慢,下面這篇文章主要給大家介紹了一次數(shù)據(jù)庫查詢超時優(yōu)化問題的實戰(zhàn)記錄,需要的朋友可以參考下2021-10-10解決Navicat數(shù)據(jù)庫連接成功但密碼忘記的問題
這篇文章給大家介紹了Navicat數(shù)據(jù)庫連接成功,密碼忘記如何解決,文中給大家介紹了兩種解決方法,有詳細的圖文講解,需要的朋友可以參考下2023-08-08