ユーザーが複数のページを繰り返し要求する可能性がある場合に効率的なページ切り替えを行うには、まずベース テーブルのすべての行を、計算した行番号と共に一時テーブルに格納して、その行番号を含む列にインデックスを設定します。
SELECT ROW_NUMBER() OVER(ORDER BY score DESC, speaker) AS rownum, * INTO #SpeakerStatsRN FROM SpeakerStats CREATE UNIQUE CLUSTERED INDEX idx_uc_rownum ON #SpeakerStatsRN(rownum)次に、要求された各ページに対し、次のクエリを実行します。
SELECT rownum, speaker, track, score FROM #SpeakerStatsRN WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize ORDER BY score DESC, speaker該当するページに含まれる行だけがスキャンされます。
INSERT INTO ... SELECT ... じゃなくて、SELECT ... INTO ... FROM ... なんてあるんだ
via ひひーん!
0 件のコメント:
コメントを投稿