2

テーブル内の多数の行に対してSQLクエリを実行しています。クエリの構造は、次のクエリに似ています。

SELECT id FROM
(
SELECT
     id,(ROW_NUMBER() OVER (ORDER BY id)) AS Row 
FROM 
     <table>
)
temp_table WHERE Row BETWEEN 1 AND 50

1 回のフェッチで 50 レコードが必要になるように、UI でページングを使用しています。私の懸念は、すべてのレコードをフェッチしてから、それらから 50 を選択していて、本当に必要なレコードだけを選択できる方法がないことです。これは単純化されたクエリであり、元のクエリは非常に複雑で、多くの結合があることに注意してください。ページングをサポートするクエリを実装する標準的な方法はありますか?

4

1 に答える 1

1

ここで私が提案するのは次のとおりです。

1.クエリでインデックス付きビュー(view_sample)を作成します

SELECT
     id,(ROW_NUMBER() OVER (ORDER BY id)) AS Row 
FROM 
     <table>

2.行にインデックス(クラスタ化)を作成します

3. 1 と 50 の間の行である view_sample から ID を選択します。

于 2012-09-07T06:11:00.680 に答える