視圖可(kě)以起到簡化應用設計(jì)、提高開發速度的作(zuò)用,因此程序員(yuán)大(dà)多有使用視圖的傾向和意願。這原本沒有問(wèn)題——簡單的視圖定義能屏蔽複雜的數據查詢結構。
然而,我們也應該意識到視圖在提供簡潔數據表述的同時,還(hái)造成了SQL在執行上的複雜化,并且某些極端的視圖甚至可(kě)能會導緻系統在資源使用上的尖峰載荷。一種常見(jiàn)的開發失誤是:程序員(yuán)使用了某定義和視圖,而該視圖又引用了其他(tā)的若幹視圖。如(rú)下圖所示就(jiù)是這樣的結構——在視圖上創建視圖,形成了由多層視圖構成的金字塔結構。
多層視圖的結構
Oracle在運行狀态下調用視圖時會将視圖還(hái)原爲SQL語句。顯然,最終可(kě)能會導緻處于頂層的視圖在還(hái)原爲SQL語法後十分(fēn)複雜,其操作(zuò)範圍會涉及若幹表。這對于Oracle來(lái)說(shuō)是個難題——多表參與SQL操作(zuò)提升了SQL複雜度,Oracle優化器并不一定能爲非常複雜的SQL計(jì)算出優化的執行路(lù)徑,因爲優化器不會用幾分(fēn)鍾時間去(qù)設計(jì)成百上千種執行計(jì)劃,然後再選擇最佳的方案執行。
所以,視圖雖好,但(dàn)在初始設計(jì)時,應考慮避免上述的極端情況。
本站(zhàn)文章(zhāng)爲深圳網站(zhàn)建設·源美網絡原創策劃,如(rú)有版權糾紛或者違規問(wèn)題,請(qǐng)聯系我們删除,謝謝!
下一篇: SQL執行效率的預評估
售後保障
承諾任何問(wèn)題1小時内解決數據備份
更安全、更高效、更穩定價格公道精準
項目經理(lǐ)精準報價不弄虛作(zuò)假合作(zuò)無風(fēng)險
重合同講信譽,無效全額退款