本記事では、OceanBaseにおけるデータベースの複数テーブル結合ステートメントの記述規範について説明します。
複数テーブル結合クエリでは、エイリアスの使用を推奨し、SELECTリスト内でフィールドを参照する際はエイリアスを使用してください。データベース.テーブル形式です。
例
select a.cid from deposit_account.tbluser a where ...複数テーブル結合シナリオでは、内部結合の使用を優先することを推奨します。
説明
OceanBaseデータベースは
LEFT JOIN、RIGHT JOIN、FULL JOINなどの外部結合構文をサポートしていますが、本番環境では外部結合の直接使用は推奨されません。複数テーブル結合クエリでは、ドライバーテーブルは結果セットが小さいテーブルを選択する必要があります。
複数レベルのサブクエリをネストしたSQLステートメントの作成は推奨されません。代わりに、テーブルの順序を結合する形式に書き換えることを推奨します。
複数テーブル結合時にデカルト積が発生することは禁止されています。デカルト積のシナリオは一般的に不合理であり、設計上の欠陥や結合条件の記載漏れが原因であることが多く、パフォーマンス問題が発生しやすいです。
テーブル結合条件における2つのフィールドが同じソート規則(collation type)を持っていることを確認してください。そうでない場合、インデックスが正しく使用できない可能性があります。
重複するSQL複数テーブルクエリでは、CTEを使用した最適化と書き換えを検討することを推奨します。