本文介紹了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)*/ ...;