本文介紹了HINT的文法及樣本。
HINT作為一種SQL補充文法,在關係型資料庫中扮演著非常重要的角色。它允許使用者通過相關的文法影響SQL的執行方式,對SQL進行特殊的最佳化。同樣,PolarDB-X也提供了特殊的HINT文法。
文法
/*+TDDL: hint_command [hint_command ...]*/
/!+TDDL: hint_command [hint_command ...]*/
說明 如果使用 /*+TDDL:hint_command*/ 格式,在使用MySQL官方命令列用戶端執行帶有PolarDB-X自訂HINT的SQL時,請在登入命令中加上-c參數。否則,由於PolarDB-X自訂HINT是以 MySQL 注釋形式使用的,該用戶端會將備註陳述式刪除後再發送到服務端執行,導致PolarDB-X自訂HINT失效。詳情請參見MySQL 官方用戶端命令。
樣本
# 查詢每個分庫中的物理表名
/*+TDDL:scan()*/SHOW TABLES;
# 將查詢下發到RDS唯讀執行個體的0000分庫上
/*+TDDL:node(0) slave()*/SELECT * FROM t1;
# 強制指定workload為AP
/*+TDDL:WORKLOAD=AP*/SELECT * FROM t1;
PolarDB-X支援在HINT語句中使用多個HINT命令:
SELECT /*+TDDL:node(0) slave()*/ ...;
PolarDB-X不支援通過以下方式使用多個HINT命令:
# 不支援單條SQL語句中包含多個HINT語句
SELECT /*+TDDL:node(0)*/ /*+TDDL:slave()*/ ...;
# 不支援HINT語句中包含重複的HINT命令
SELECT /*+TDDL:node(0) node(1)*/ ...;