【 TiDB 使用环境】生产环境 TIDB 4.0.10版本
在使用2张表关联的时候想用hint干预其执行计划,help上也表示该版本支持这些hint,但是实际操作下来总是提示报错,并且执行计划的hint并没有生效,是否是BUG?
SQL语句:
explain
SELECT /+HASH_JOIN(A,C)/
A.C_CODE,C.TYPES
FROM ODS.HIS_CUSTS A
INNER JOIN ODS.USERS C
WHERE A.C_CODE = C.U_CODE
AND A.TDATE = 20230525
提示:There are no matching table names for (A, C) in optimizer hint /*+ HASH_JOIN(a, c) / or /+ TIDB_HJ(a, c) */. Maybe you can use the table alias name
并且执行计划仍是 index join 模式,其实数据量 A 表和C表都是 几百万,应该用hash join更好
【另外】同样的hint问题还有 /+ INL_JOIN(A) / /+ MERGE_JOIN(A,C)/ 都会提示
There are no matching table names for (A, C) in optimizer hint /*+ MERGE_JOIN(a, c) / or /+ TIDB_SMJ(a, c) */. Maybe you can use the table alias name
There are no matching table names for (A) in optimizer hint /*+ INL_JOIN(a) / or /+ TIDB_INLJ(a) */. Maybe you can use the table alias name
该hint都是直接拿官方的help中的hint语法去使用的应该没有写错语法,但是为什么总是提示失败,并且hint也不生效?