順序付き分析関数RANKまたはROW_NUMBERを含むQUALIFY句は、TOP n演算子と同じ結果を返します。
高いパフォーマンスを得るためには、RANKまたはROW_NUMBERを指定したQUALIFYではなく、TOPオプションを使用してください。諸条件が合えば、TOP n演算子の方がパフォーマンスが高くなります。そうでない場合でも、TOP n演算子によって、ほぼ同等のパフォーマンスが得られます。
例えば、これらの2つの文は同じ意味ですが、TOP nを指定する文は、QUALIFY ROW_NUMBERを指定する文よりパフォーマンスが高くなります。
SELECT TOP 10 * FROM sales ORDER BY county; SELECT * FROM sales QUALIFY ROW_NUMBER() OVER (ORDER BY COUNTY) <= 10;
同様に、これらの2つの文は同じ意味ですが、TOP nを指定する文は、QUALIFY RANKを指定する文よりパフォーマンスが高くなります。
SELECT TOP 10 WITH TIES * FROM sales ORDER BY county; SELECT * FROM sales QUALIFY RANK() OVER (ORDER BY county) <= 10;