Employee
100万件のレコードを持つテーブルがあります。Webアプリケーションでデータをページングするための次のSQLがあります。正常に動作しています。しかし、私が問題と思うのは、派生テーブルtblEmployee
がEmployee
テーブル内のすべてのレコードを選択することMyRowNumber
です(値を作成するため )。
これにより、Employee
テーブル内のすべてのレコードが選択されると思います。
それは本当にうまくいくのでしょうか?または、SQL Serverは元のEmployee
テーブルから5つのレコードのみを選択するように最適化されていますか?
DECLARE @Index INT;
DECLARE @PageSize INT;
SET @Index = 3;
SET @PageSize = 5;
SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY EmpID asc) as MyRowNumber,*
FROM Employee) tblEmployee
WHERE MyRowNumber BETWEEN ( ((@Index - 1) * @PageSize )+ 1) AND @Index*@PageSize