時(shí)間:2024-02-24 17:17作者:下載吧人氣:34
一、概述:
PL/pgSQL函數(shù)在第一次被調(diào)用時(shí),其函數(shù)內(nèi)的源代碼(文本)將被解析為二進(jìn)制指令樹,但是函數(shù)內(nèi)的表達(dá)式和SQL命令只有在首次用到它們的時(shí)候,PL/pgSQL解釋器才會(huì)為其創(chuàng)建一個(gè)準(zhǔn)備好的執(zhí)行規(guī)劃,隨后對(duì)該表達(dá)式或SQL命令的訪問都將使用該規(guī)劃。如果在一個(gè)條件語句中,有部分SQL命令或表達(dá)式?jīng)]有被用到,那么PL/pgSQL解釋器在本次調(diào)用中將不會(huì)為其準(zhǔn)備執(zhí)行規(guī)劃,這樣的好處是可以有效地減少為PL/pgSQL函數(shù)里的語句生成分析和執(zhí)行規(guī)劃的總時(shí)間,然而缺點(diǎn)是某些表達(dá)式或SQL命令中的錯(cuò)誤只有在其被執(zhí)行到的時(shí)候才能發(fā)現(xiàn)。
由于PL/pgSQL在函數(shù)里為一個(gè)命令制定了執(zhí)行計(jì)劃,那么在本次會(huì)話中該計(jì)劃將會(huì)被反復(fù)使用,這樣做往往可以得到更好的性能,但是如果你動(dòng)態(tài)修改了相關(guān)的數(shù)據(jù)庫對(duì)象,那么就有可能產(chǎn)生問題,如:
網(wǎng)友評(píng)論