0
我在表Entity和Contact(對應於對象的不可靠)之間有1:1的關係。 fn_match(id)是返回布爾值的UDF,如果記錄匹配某些特殊條件(函數內的附加查詢),則返回true。這是一個查詢:用戶定義函數的mysql查詢 - 爲什麼函數被調用兩次?
select *
from Entity a
inner join Contact b on a.id = b.id
where fn_match(a.i)
它工作正常,但大幅加入戰利品的表現。 我已經添加了日誌記錄,並發現fn_match被調用了兩次,實體中的每個記錄都是fn_match(id)= true。我可以修復它爲函數頭添加確定性,但我曾經認爲訪問表數據的每個函數/存儲過程都是非確定性的。
這個問題的正確解決方案是什麼?
我同意每個記錄的調用函數都不利於性能。我無法解釋所有細節,但我真的被迫實施這種方式。 – burnall 2010-08-30 19:35:26