ホームページ > データベース > mysql チュートリアル > sqlserverのページングクエリ処理方法を説明する

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

巴扎黑
リリース: 2017-08-11 15:01:46
オリジナル
1844 人が閲覧しました

以下は、オンラインで見つけたクエリ スクリプトの作成方法です。参考までに、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 サイトの他の関連記事を参照してください。

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