1つのSQLにテーブルは何個まで書いて良い?


ここでは、ORACLE SQLで1つのSQLにテーブルを何個まで書いて良いか、紹介します。

私の記憶が確かならば、特に何個までと言う制約はなかった気がします。

ちなみに、最近、私がチューニングしていたSQLでは、1つのSQLで40~50個のテーブルを参照していました。
実行計画だけで、400~500行くらいあって、大変でした(笑)

と言うわけで、ほとんど際限なくテーブルを書けるのでしょう。

しかし、昔、ORACLEマスタープラチナを保持するDBAから聞いた話では、1つのSQLには、4~5個くらいにしておくべきだと言われました。
それ以上増やすと、実行計画の組み立てパターンがとてつもなく増加するそうで、それに従いORACLEオプティマイザが適切でない実行計画を立てる可能性も上がるのだそうです。

経験上ではありますが、テーブル参照している数が多い場合、そして副問合せなどを組み合わせている場合に、実行計画が適切でなくなり、SQLが突然遅くなることがあります。

やはりたくさんのテーブルを参照する場合は、ある程度のかたまりで、ワークテーブルへデータを登録するなど、処理を分割して、1つのSQLで参照するテーブル数を減らしておくべきでしょう。

>>副問合せをたくさん使うSQLをチューニングする方法

>>ワークテーブルを使ってSQLチューニングする方法