新聞中心
這篇文章主要講解了“怎么使用DETERMINISTIC函數(shù)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么使用DETERMINISTIC函數(shù)”吧!
專(zhuān)注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)麟游免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
我定義了如下函數(shù):
FUNCTION plch_getdata (n NUMBER) RETURN NUMBER IS BEGIN RETURN n; END;
哪些選項(xiàng)包含了這樣的代碼,如果我把上述函數(shù)加上DETERMINISTIC關(guān)鍵字,則性能會(huì)得到改善?
兩點(diǎn)要注意:
1. 在其中一個(gè)選項(xiàng)中,這個(gè)函數(shù)被“重定義”為一個(gè)內(nèi)嵌的子程序。
2. 其中的兩個(gè)選項(xiàng)包含了在ALL_SOURCE執(zhí)行的查詢(xún),你可以假定這個(gè)視圖中有超過(guò)1,000,000行的代碼。
(A)
DECLARE n NUMBER; BEGIN FOR rec IN (SELECT plch_getdata (1) n FROM all_source WHERE ROWNUM < 1000000) LOOP n := rec.n; END LOOP; END; /
(B)
DECLARE n NUMBER; BEGIN FOR indx IN 1 .. 10000000 LOOP n := plch_getdata (1); END LOOP; END; /
(C)
DECLARE n NUMBER; FUNCTION plch_getdata (n NUMBER) RETURN NUMBER DETERMINISTIC IS BEGIN RETURN n; END; BEGIN FOR indx IN 1 .. 10000000 LOOP n := plch_getdata (1); END LOOP; END; /
(D)
DECLARE n NUMBER; BEGIN FOR rec IN (SELECT plch_getdata (ROWNUM) n FROM all_source WHERE ROWNUM < 1000000) LOOP n := rec.n; END LOOP; END; /
答案AB.
A和B都反復(fù)調(diào)用同樣的函數(shù)并使用同樣的參數(shù)。加上deterministic 之后, 函數(shù)結(jié)果會(huì)被緩存,只有一次調(diào)用。
C:語(yǔ)法錯(cuò)誤,嵌套子程序里面不可以用deterministic。
D:每次參數(shù)都發(fā)生變化因此無(wú)法緩存。
感謝各位的閱讀,以上就是“怎么使用DETERMINISTIC函數(shù)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么使用DETERMINISTIC函數(shù)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
當(dāng)前題目:怎么使用DETERMINISTIC函數(shù)
鏈接地址:http://www.dlmjj.cn/article/jphcpj.html