リファレンスガイド> TDVクエリエンジンオプション> SELECTオプション> MAX_ROWS_LIMIT(SELECTオプション)
 
MAX_ROWS_LIMIT(SELECTオプション)
MAX_ROWS_LIMITは、クエリによって返される行数を制限します。これは、ユーザーが返された結果の最初のn行のみに関心がある場合に役立ちます。
このオプションは、多くの場合、ROWS_OFFSETと組み合わせて使用されます(ROWS_OFFSET(SELECTオプション)を参照)。 ROWS_OFFSET、OFFSET、FETCH、およびmaxRows JDBC/ODBCパラメーターと組み合わせてどのように機能するかを、このセクションの最後にある例2から9に示します。
このオプションが指定されていない場合、選択されたすべての行が返されます。
演算子
SELECT
構文
MAX_ROWS_LIMIT=<int>
 
<int>引数は、クエリが返す最大行数を指定します。
備考
SELECTオプションがサブクエリまたはサブ選択の一部として指定されている場合、ルートレベルのクエリ実行プランに影響を与えない場合があります。
行フィルタリングのパフォーマンスを向上させるには、MAX_ROWS_LIMITとROWS_OFFSETではなくOFFSETとFETCHを使用します。その理由は、OFFSETとFETCHは、パススルークエリのためにデータソースにプッシュされるSQL標準オプションであるためです。 MAX_ROWS_LIMITおよびROWS_OFFSETは、TDVのみの構造であり、常にTDVでフィルタリングを実行します(はるかに多くの行がフェッチされた後)。
OFFSETとFETCHの構文と使用法については、SQL2008標準を参照してください。
例1
これは、構文を示す簡単な例です。
SELECT {OPTION MAX_ROWS_LIMIT=100} * FROM table1
例2
この例では、maxRowsが大きすぎて効果がありません。 MAX_ROWS_LIMITは、OFFSETによってスキップされた行を25行超えて許可し、ROWS_OFFSETはそれらの最初の10行を削除します。
クエリ:
SELECT {OPTION ROWS_OFFSET=10, MAX_ROWS_LIMIT=25} * FROM " + tableName + "
OFFSET 50 FETCH NEXT 40 ROWS ONLY
例3
この例では、maxRowsが大きすぎて効果がありません。 MAX_ROWS_LIMITは、OFFSETによってスキップされた行を25行超えて許可し、ROWS_OFFSETはそれらの最初の10行を削除します。
クエリ:
SELECT {OPTION ROWS_OFFSET=10, MAX_ROWS_LIMIT=25} * FROM " + tableName + "
OFFSET 50 FETCH NEXT 12 ROWS ONLY"
例4
クエリ:
SELECT {OPTION ROWS_OFFSET=10, MAX_ROWS_LIMIT=25} * FROM " + tableName + "
OFFSET 50 FETCH NEXT 34 ROWS ONLY
例5
この例では、maxRowsが大きすぎて効果がありません。 MAX_ROWS_LIMITは、OFFSETによってスキップされた行を超える25行を許可します。
クエリ:
SELECT {OPTION MAX_ROWS_LIMIT=25} * FROM " + tableName + "
OFFSET 50 FETCH NEXT 34 ROWS ONLY
例6
Query:
SELECT {OPTION MAX_ROWS_LIMIT=25} * FROM " + tableName + "
OFFSET 50 FETCH NEXT 34 ROWS ONLY
例7
この例では、maxRowsが大きすぎて効果がありません。 MAX_ROWS_LIMITは、OFFSETによってスキップされた行を超える25行を許可します。
クエリ:
SELECT {OPTION MAX_ROWS_LIMIT=25} * FROM " + tableName + "
OFFSET 50 ROWS
例8
この例では、maxRowsが大きすぎて効果がありません。 ROWS_OFFSETは、OFFSETによってスキップされた行を超えて最初の10行を削除します。
クエリ:
SELECT {OPTION ROWS_OFFSET=10} * FROM " + tableName + "
OFFSET 50 FETCH NEXT 12 ROWS ONLY
 
例9
この例では、ROWS_OFFSETは、OFFSETによってスキップされた行を超えて最初の10行を削除し、maxRowsは残りの10行を返すことを許可します。
クエリ:
SELECT {OPTION ROWS_OFFSET=10} * FROM " + tableName + "
OFFSET 50 FETCH NEXT 34 ROWS ONLY