以下は、オンラインで見つけたクエリ スクリプトの作成方法です。参考までに、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、310ms320,000、953ms、720ms、686ms
は、スプライスするプログラムですSQL ステートメント ページング ソリューション,
ユーザーが言及したSQL文は、複雑なSQLロジックを記述する必要はありません
ユーザーは次のようにSQLを提供しました
SQLコード
select * from table1
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
今の列はここでの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 サイトの他の関連記事を参照してください。