簡體   English   中英

為什么我的 pg_hint_plan 沒有使用前導提示?

[英]Why is my pg_hint_plan Leading hint not used?

我用Leading(ba)定義了連接順序,但 PostgreSQL 或 YugabyteDB 等兼容數據庫仍然從a連接到b

yugabyte=# explain (costs off, timing off)
          /*+ Leading( b a ) */ 
          select * from table_a a join table_b b using(id);

                    QUERY PLAN
--------------------------------------------------
 Nested Loop
   ->  Seq Scan on table_a a
   ->  Index Scan using table_b_pkey on table_b b
         Index Cond: (id = a.id)

前導提示有兩種語法。 一個只是按照查詢計划器應該考慮的順序列出表,例如Leading ( ba ) ,將交換內部和外部表的選擇留給優化器。 另一個使用額外的括號將每個連接對定義為Leading( (ba) ) ,其中左/右項是(外部內部)。 對於第三個表,它將是Leading( ( (ba) c ) )Leading( ( c (ba) ) )

通常,修復執行計划需要第二種語法,加上每個連接的連接方法提示和每個表的訪問方法提示。

這里的例子: https ://dev.to/yugabyte/predictable-plans-with-pghintplan-full-hinting-1do3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM