Mysql
包含確定性使用者定義函式的查詢可以記憶體在 mysql 查詢記憶體中嗎?
根據mysql 5.6 文件:
在這些情況下,查詢也不會被記憶體: … 它指的是使用者定義的函式 (UDF) 或儲存的函式。
但是,我看到有人聲稱如果 UDF 是完全確定的,則實際上可以記憶體查詢。有人可以確認或否認嗎?如果確實 UDF 確實阻止了記憶體,有沒有比簡單地將 UDF 內聯到每個查詢中更智能的方法來允許記憶體查詢?(這會起作用,但顯然會很麻煩。)
編輯:此外,儲存函式與用 C 編寫的使用者定義函式的行為是否不同?
基於對 MySQL 5.5.33 的一些實驗,答案是“否”。我有一個確定性的函式定義(它是一個簡單的日期計算)並標記為 DETERMINISTIC。如果我在查詢中使用它,則查詢不會被記憶體。如果我根據內置 date_sub() 函式的定義替換呼叫,則查詢將被記憶體。