ホームページ > データベース > mysql チュートリアル > 3 つのページング方法の効率性の簡単なテスト

3 つのページング方法の効率性の簡単なテスト

巴扎黑
リリース: 2017-05-01 10:40:07
オリジナル
1383 人が閲覧しました

より大量のデータと異なる場所を含むページを比較しました。

テーブルの作成:

CREATE TABLE [TestTable] (
 [ID] [int] IDENTITY (1, 1) NOT NULL ,
 [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
 [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
 [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GO
ログイン後にコピー

データを挿入: (100 万)

SET IDENTITY_INSERT TestTable ON
declare @i int
set @i=1
while @i<=1000000
begin
    insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, &#39;FirstName_XXX&#39;,&#39;LastName_XXX&#39;,&#39;Country_XXX&#39;,&#39;Note_XXX&#39;)
    set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF
ログイン後にコピー

ページネーションの解決策 1: (ページネーションには Not In と SELECT TOP を使用します)

文形式:

rreee

ページング ソリューション 2: (次より大きい ID と SELECT TOP ページングを使用)

SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
          (SELECT TOP 页大小*页数 id
         FROM 表
         ORDER BY id))
ORDER BY ID
ログイン後にコピー

ページング ソリューション 3: (SQL カーソル ストアド プロシージャ ページングの使用)

SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >
          (SELECT MAX(id)
         FROM (SELECT TOP 页大小*页数 id
                 FROM 表
                 ORDER BY id) AS T))
ORDER BY ID
ログイン後にコピー

テスト結果:

テストはすべて 1 ページに 10 項目あります。3 つの数値は、3 つのソリューションが結果を生成するまでにかかる時間を表します。単位は秒です。 ページ 2: 18、10、29

500 ページ: 12、8、21

ページ 50000: 16、18、22

ページ 500000: 24、16、22

このテストの主な目的は、大量のデータのさまざまな部分のページめくりの効率をテストすることです。直線的な結果になるはずだと思っていましたが、変化が奇妙であることがわかりました。数回テストした結果、エラーは 1 ~ 2 秒以内に収まりました。SQL Server はさまざまな位置に応じてページめくりも最適化されていると推定されます。クエリ分析を確認したところ、主なコストは依然として order by であり、これが主キーでない場合、または文字列である場合は、おそらく速度が低下します。

他に忙しいため、これ以上のテストは行われていません。興味のある友人は、100,000 項目、インデックスなし、文字列コンテンツを使用してさまざまなテストを続けることができます。結果を忘れずに教えてください。

以上が3 つのページング方法の効率性の簡単なテストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート