Partitioning

什麼是“葉子表達式”?

  • March 4, 2018

什麼是“葉子表達式”?

分區子句表達式在以下方面受到限制:

….

  • 您可以在分區子句表達式中指定葉表達式、函式和運算符。
  • 分區子句中的所有葉表達式必須是表的常量或列。

來源https://my.vertica.com/docs/6.1.x/HTML/index.htm#18125.htm

我很確定葉子表達式的意思是“a?b:c”。來自條件的離散值。

但基本上總體資訊是說您需要避免空值。他們不能在 null 上進行分區。

傳統上,葉子和非葉子是指 btree 中的節點。但是,我認為這與這裡的上下文沒有任何關係。

它在分區語句的上下文中使用。9.0 的文件稍微清晰一些

PARTITION BY表達式可以指定葉表達式、函式和運算符。

在我看來,葉子表達式是一種可以簡化為值的東西。葉和非葉的概念很可能是從過程程式中藉來的。這是一本關於現代 X86 彙編語言程式的書中的範例:32 位、64 位、SSE 和 AVX

葉函式是這樣的函式:

  • 不要呼叫任何其他函式。
  • 不要修改 RSP 寄存器的內容。
  • 不要分配任何本地堆棧空間。
  • 不要修改任何非易失性通用或 XMM 寄存器。
  • 不要使用異常處理。
  • X86-64 彙編語言葉函式更容易編碼,但它們只適用於相對簡單的計算任務。

我們可以通過記下這一點來驗證文件的上下文

強烈建議您使用 Vertica 內置的 HASH 功能,該功能可以在整個集群中均勻分佈數據,並有助於優化查詢執行。

HASH 函式的文件中,他們說,

所有葉表達式必須是對CREATE PROJECTIONSELECT列表中的列的常量或列引用。

所以本質上,雜湊可以在非聚合函式、運算符或葉表達式(常量或列)上工作。這意味著葉表達式是純函式(沒有副作用)的子集,並且可以簡單地折疊成文字。

引用自:https://dba.stackexchange.com/questions/49215