SQLSERVER効率的なページングクエリ

SQLServerのページングクエリでは、データベースは、SQLServerのショートボードではありません何も、いくつかの方法を考え出す、テーブルアーティクル、フィールドID、YEAR ...(他は省略)、データ53 210(実際の顧客データではなく、量を想定しています)、ページングクエリあたり30、問合せセクションデータ1500(すなわち、45001から45030個)、フィールドIDクラスタ化インデックス、YEARないインデックス、SQLSERVERバージョン:2008R2

最初のシナリオ、最も単純で一般的な方法: 

SELECT  TOP  30  *  FROM ARTICLE WHERE ID 、NOT  、INSELECT  TOP  45000 IDをFROM記事のORDER  BY  YEAR  DESC、ID DESCORDER  BY  YEAR  DESC、ID DESCを

二番目のオプション: 

コードは以下の通りであります:

SELECT  *  FROMSELECT  TOP  30  *  FROMSELECT  TOP  45030  *  FROM ARTICLE ORDER  BY  YEAR  DESC、ID DESC F)ORDER  BY F。YEARの ASC、f.ID DESC)の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の   
     ID SELECT トップ30 IDをFROM SELECT トップ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、W1をw2.n。*  FROM ARTICLEの(W1、SELECT  TOP  50030(ROW_NUMBER)をOVERORDER  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  、INSELECT  TOP  1000 IDをFROM記事のORDER  BY  YEAR  DESC、ID DESCORDER  BY  YEAR  DESC、ID DESCを

100回必要な平均クエリ時間:80年代

二番目のオプション:

コードは以下の通りであります:

SELECT  *  FROM   (   SELECT  TOP  30  *  FROMSELECT  TOP  1030  *  FROM ARTICLE ORDER  BY  YEAR  DESC、ID DESC F)ORDER  BY F。YEARの ASC、f.ID DESC)のORDER  BY秒。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の   
     ID SELECT トップ30 IDをFROM SELECT トップ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、W1をw2.n。*  FROM(記事W1、   SELECT  TOP  1030(ROW_NUMBER)をOVERORDER  BY  YEAR  DESC、ID DESC ID)N FROM ARTICLE)W2 WHERE w1.ID = w2.ID AND w2.n >  1000年 ORDER  BY w2.n ASC

100回の平均クエリの所要時間:14S

     ページ上のクエリのフロントページ、3> 4> 5> 2> 1の効率は、その後、ユーザーの習慣に従って5> 4> 3> 1> 2は、一般的なユーザーは、最初の数の検索を見てこのように後にするときページなので、シナリオ5を考慮すると、最良の選択である場合には、しかし、SQL2000に注意を払うことができます345のプログラムを選択するには時間的制約にROW_NUMBER()関数を、サポートされていないとの条件がないより深く、より広範なテスト、興味

おすすめ

転載: www.cnblogs.com/caiyt/p/11797644.html