本記事では、OceanBaseにおける複数テーブルの結合ステートメントの作成規範について説明します。
複数テーブルの結合クエリでは、エイリアスを使用することを推奨します。また、SELECT句でフィールドを参照する際は、エイリアスを使用してテーブル名.列名の形式で記述する必要があります。
例:
select a.cid from deposit_account.tbluser a where ...本番システムでは、左外部結合、右外部結合、完全外部結合を含む外部結合の使用は強く推奨されません。
複数テーブルの結合クエリにおいて、ドライバーとなるテーブルは結果セットが小さいテーブルを選択する必要があります。
複数レベルのサブクエリをネストしたSQL文の作成は推奨されず、代わりにテーブルの順序付き結合形式への書き換えが推奨されます。
複数テーブルの結合時にデカルト積を発生させることは禁止されています。デカルト積の場合は一般的に不合理であり、設計上の欠陥や結合条件の記述漏れによって引き起こされることが多く、パフォーマンス上の問題も容易に発生します。
テーブル結合条件において、2つのフィールドが同一のソートルール(collation type)を持つことを確認してください。そうでない場合、インデックスが正しく機能しない可能性があります。
冗長なSQLによる複数テーブルクエリでは、CTEを使用した最適化と書き換えを検討することを推奨します。