日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Optimizer Hints

更新時間: 2024-12-13 18:19:06

PolarDB PostgreSQL版(兼容Oracle)中,執行DELETE、INSERT、SELECT或UPDATE命令時,將生成多個執行計劃,然后根據預估執行成本等因素選擇最優計劃。您可以使用Optimizer Hint來影響最優執行計劃的選擇。

背景

在執行DELETE、INSERT、SELECT或UPDATE命令時,PolarDB PostgreSQL版(兼容Oracle)會生成一組執行計劃。在分析這些執行計劃之后,PolarDB PostgreSQL版(兼容Oracle)將選擇可以在最短的時間內返回結果集的執行計劃。

PolarDB PostgreSQL版(兼容Oracle)選擇執行計劃主要從以下幾個因素考慮:

  • 數據處理操作的預估執行成本。

  • 分配給postgresql.conf文件Query Tuning部分中參數的參數值。

  • ANALYZE命令收集的列統計信息。

通常情況下,PolarDB PostgreSQL版(兼容Oracle)將選擇執行成本最低的計劃。但是您可以這個過程中使用optimizer hint來影響最終的選擇, 即使用Optimizer Hint。

Optimizer Hint是指緊跟在DELETE、INSERT、SELECT或UPDATE命令后,類似注釋的語法中的指令。注釋中的關鍵字指示PolarDB PostgreSQL版(兼容Oracle)在生成結果集時選擇或避免選擇特定的計劃。

語法

Optimizer Hint可包含在下面的任一形式中。

{ DELETE | INSERT | SELECT | UPDATE } /*+ { hint [ comment ] } [...] */
 statement_body

{ DELETE | INSERT | SELECT | UPDATE } --+ { hint [ comment ] } [...]
 statement_body
說明
  • 加號 (+) 必須緊跟在/*或--之后,中間不能添加任何空格,否則無法將對應的內容解讀為hints。

  • 以上兩種形式中,hint和注釋的展現形式略有不同:

    • 第一種語法形式,hint和注釋可以跨越多行。

    • 第二種語法形式,要求所有hint和注釋必須在一行中。

    但是兩種形式中,除了hint和注釋的其余部分,都必須另起一行。

  • 推薦與EXPLAIN命令一起使用,可確保hint形式正確。

參數

參數

說明

hint

優化器提示指令。

comment

帶有附加信息的字符串。請注意,注釋中可以包含哪些字符存在限制。通常,comment 只能包含字母、數字、下劃線、美元符號、數字符號和空格字符。這些字符還必須符合標識符的語法。如果注釋并非這種形式,將忽略任何后續hint。

statement_body

DELETE、INSERT、SELECT或UPDATE命令的其余部分。

注意事項

  • 如果通過參數設置禁用了某種執行計劃類型,那么即使在hint中指定了該計劃,也不會使用此計劃,除非沒有其他可行的選項。參數示例:enable_indexscan、enable_seqscan、enable_hashjoin、enable_mergejoin和enable_nestloop,均為布爾參數。

  • 由于hint是嵌入在注釋中的,如果hint拼寫錯誤,或者視圖、表或列名稱等hint的任何參數拼寫錯誤,或者 SQL 命令中不存在該參數,此時不會提示任何語法錯誤,只會忽略整個hint。

  • 如果在 SQL 命令中使用了別名表示表或視圖名稱,則必須在hint中使用別名,而不是原始對象名。例如,在命令 SELECT /*+ FULL(acct) */ * FROM accounts acct ..., acct 中,必須在FULL hint中指定accounts的別名,而不是表名accounts

  • 不建議在生產環境中使用optimizer hint,因為生產環境中的表數據一直會發生變化。

以下各節更詳細地介紹Optimizer Hint。

上一篇: 備份配置文件管理功能 下一篇: 默認優化模式
阿里云首頁 云原生數據庫 PolarDB 相關技術圈