天天看點

SQL--實作分頁查詢

       在查詢資料中,對于某些資料量過大,為了減少頁面上單頁的加載時間,我們常常會選擇分頁查詢,分頁查詢有很多方法,下面主要介紹兩種分頁方法。

    一. 通過主鍵來實作分頁:

        1.資料庫背景. Person表,ID主鍵盤,自增1,varchar行Name.

   

SQL--實作分頁查詢

 

     2.裡面包含了10條資料。

SQL--實作分頁查詢

3. 可以通過唯一ID,來進行分頁.

      Note:SELECT TOP((@PageIndex-1)*@PageSize) ID FROM Person 查詢出前面所有的資料的ID. 然後父查詢,通過NOT IN 将已經查詢過的ID排除。

      二.通過row_number() 來實作分頁查詢 

         1.不用主鍵也可以查詢,通過row_number來為沒一個查詢的資料标記上行号,然後在所标記的行号上進行分組取行。

      三.小Tips

           1.起初在寫部落格的時候,其實還想過另一種方法,不防可以提出來,大家來看看這段SQL.

    

     2.下面是前面3個SQL執行的結果.

SQL--實作分頁查詢

             Note: 第三個sql是沒有資料的。對于第三條sql,原理是先取出前面頁數中最大的ID為maxID,然後取出ID大于MaxID的資料,取出前面的PageSize行,看起來的确沒問題,可是最後一條資料都沒有,這是為什麼呢,問題出在了下面這半句Sql

     Note:因為ID是主鍵自己增加,在調用MAX(ID)的是其實區的是目前最大的ID. (對于目前情況MAX(ID)始終是10,是以沒資料)

      四.總結:

            有關MAX(ID)還請了解這方面的解釋一下為何是最大的ID.小弟也隻是在寫sql的時候發現的. 對原理不熟悉。求各位博友指點。