いくつかの可能なオプションがあります:
1.最初から最後まで必要な値を選択し、スクリプトに渡します 。 出力時には、不要な値をカットします。
SELECT TOP n * FROM TABLE ORDER BY id
nは最後の要素の番号です
id-一意の識別子
大きなテーブルで作業する場合、実行に非常に長い時間がかかり、小さなテーブルにのみ適しています
2.私たちは、に基づいて発生しないという条件で選択を行います
SELECT TOP n id,* FROM TABLE
WHERE id not in (SELECT TOP (n - m) id FROM TABLE)
ORDER BY id
nは最後の要素の番号です
mは必要な要素の数です
id-一意の識別子
場合によっては最初の方法よりも少し速く動作し、単純なクエリの条件下で十分に大きなテーブルを処理するのに適しています
3.最後に、row_number()を使用する最後のメソッド、ほとんどすべてのテーブルで最速の作業
WITH num_row
AS
(
SELECT row_number() OVER (ORDER BY id) as nom , *
FROM TABLE
)
SELECT * FROM num_row
WHERE nom BETWEEN (n - m) AND n
nは最後の要素の番号です
mは必要な要素の数です
id-一意の識別子
昨日、小さなパラドックスに気づきました。メソッド3の選択は、同じテーブル(6,000万行を超える)からSELECT TOP nを選択するよりもずっと速く機能しました。
PSこれはハブに関する私の最初のトピックです。厳密に判断しないでください。