QUALIFY RANKおよびQUALIFY ROW_NUMBERよりもパフォーマンスに有利なTOP n演算子 - Teradata Database - Teradata Vantage NewSQL Engine - TOP n 演算子、QUALIFY RANKおよびQUALIFY ROW_NUMBER、SELECT SQL文

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/fbo1512081269404.ditamap
dita:ditavalPath
ja-JP/fbo1512081269404.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

順序付き分析関数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;