全部產品
Search
文件中心

PolarDB:如何使用HINT

更新時間:Jul 06, 2024

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