ホームページ  >  記事  >  データベース  >  sqlserverのページングクエリ処理方法を説明する

sqlserverのページングクエリ処理方法を説明する

巴扎黑
巴扎黑オリジナル
2017-08-11 15:01:461765ブラウズ

以下は、オンラインで見つけたクエリ スクリプトの作成方法です。参考までに、Script House プラットフォームで共有したいと思います。

sqlserver2008 はキーワード制限をサポートしていないため、ページング SQL クエリ ステートメントは使用できません。 MySQL では幸いなことに、sqlserver2008 には top や rownumber などのキーワードが用意されているため、これらのキーワードを使用してページングを実行できます。

以下は、インターネットで見つけたクエリ スクリプトを作成するいくつかの方法です:

いくつかの sqlserver2008 の効率的なページング SQL クエリ ステートメント

トップ ソリューション:

SQL コード:

select top 10 * from table1
where id not in(select top 开始的位置 id from table1)

max:sql code:

select top 10 * from table1
where id>(select max(id)
from (select top 开始位置 id from table1 order by id)tt)

row:sql code:

select *
from (
select row_number()over(order by tempcolumn)temprownumber,*
from (select top 开始位置+10 tempcolumn=0,* from table1)t
)tt
where temprownumber>开始位置

3種類 ページング方法はマックスプランとトッププランです行スキーム

効率: 1番目: 行

2番目: 最大

3番目: トップ

欠点: 最大:ユーザーは複雑な SQL を記述する必要があり、サポートされていません。独自の列ソート

上: ユーザーは複雑な SQL を記述する必要があり、複合主キーはサポートされていません

行: sqlserver2000 はサポートされていません

テストデータ: 各ページ、合計 320 万個のデータ10 個のデータを表示し、それぞれ 20,000 ページ、150,000 ページ、320,000 ページをテストしました。

ページ番号、トッププラン、最大プラン、行プラン

20,000、60ms、46ms、33ms

150,000、453ms、343ms、310ms

320,000、953ms、720ms、686ms

は、スプライスするプログラムですSQL ステートメント ページング ソリューション,

ユーザーが言及したSQL文は、複雑なSQLロジックを記述する必要はありません

ユーザーは次のようにSQLを提供しました

SQLコード


select * from table1

5番目の項目から開始し、5項目をクエリして処理しますSQL は

sql code


select *
from (
select row_number()over(order by tempcolumn)temprownumber,*
from (select top 10 tempcolumn=0,* from table1)t
)tt
where temprownumber>5

になります これはどういう意味ですか?分解してみます

まずはユーザーが入力したSQL文を少し修正します

selectの後にtopを追加すると開始位置+項目数になります

tempcolumの列を追加するとこうなります

SQLコード


select top 20 tempcolumn=0,* from clazz

embedded 旅行番号をクエリできるようにレイヤーを1つ設定します

今の列はここでのorder byに使用されています

(sqlserverのrow_number関数がorder byでなければならない理由がわかりません)

SQLコード


select row_number()over(order by tempcolumn)temprownumber,*
from (修改过的查询)t

別のレイヤーを適用し、開始位置よりも小さい行番号を持つ行を除外します

SQLコード


select * from (第二层)tt
where temprownumber>10

以上がsqlserverのページングクエリ処理方法を説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。