このトピックでは、ヒントの構文とヒントの使用方法について説明します。
ヒントはSQL構文の補足であり、リレーショナルデータベースで重要な役割を果たします。 ヒントを使用すると、対応する構文を使用してSQL文の実行方法を選択できます。 これにより、SQL文の実行を最適化できます。 PolarDB-Xは特別なヒント構文を提供します。
構文
/* + TDDL: hint_command [hint_command ...]* /
/!+ TDDL: hint_command [hint_command ...]*/
説明 MySQLコマンドラインクライアントでは、PolarDB-Xヒントを /* + TDDL:hint_command * /の形式で含むSQLステートメントを実行する必要があります。 この場合、ログオンコマンドに-cパラメーターを追加します。 それ以外の場合、クライアントは、クライアントが実行のためにSQLステートメントをサーバーに送信する前に、カスタムPolarDB-Xヒントを削除します。 これは、ヒントがMySQLコメントの形式であるためです。 その結果、カスタムPolarDB-Xヒントは有効になりません。 詳細については、「mysql client options」をご参照ください。
例
# 各データベースシャードの物理テーブルの名前を照会します。
/* + TDDL:scan()*/SHOW TABLES;
# 読み取り専用ApsaraDB RDSインスタンスのDatabase Shard 0000にクエリをルーティングします。
/* + TDDL: ノード (0) スレーブ ()*/SELECT * FROM t1;
# ワークロードタイプを分析処理 (AP) に設定します。
/* + TDDL:WORKLOAD=AP */SELECT * FROM t1;
PolarDB-Xでは、SQL文で複数のヒントコマンドを含むヒントを使用できます。
SELECT /* + TDDL: ノード (0) スレーブ ()*/ ...;
PolarDB-Xには、複数のヒントコマンドを含むヒントの使用に次の制限があります。
# 単一のSQL文に複数のヒントを含めることはできません。
SELECT /* + TDDL:node(0)*/ /* + TDDL:slave()*/ ...;
# ヒントに重複するヒントコマンドを含めることはできません。
SELECT /* + TDDL: ノード (0) ノード (1)*/ ...;