建議開發員少用帶錶連結的檢視(此檢視非物化檢視)
之前雖然說過快可以專心搞試驗了
但誰曾想馬上就分過來許多的任務
而且,大多數是煩人、無聊的體力式任務
不過,今天利用了幾分鐘的閒暇時間
驗證了一個以前看過文件的東西:檢視(View)
主要目的是,求證此資料庫物件對於資料庫效能通常會造成影響的觀點
以前只是通過文件知道了對檢視檢索時
檢視外的條件是要在選擇了檢視內容後才起作用的
比如有個檢視:
CREATE VIEW V_TEST AS
SELECT TB1.C1,TB1.C2,TB2.C3
FROM TB1 INNER JOIN TB2
ON TB1.TB1_ID=TB2.TB2_ID
此檢視是有兩個表進行連結後行程的
而當使用下列SQL進行查詢時:
SELECT C1,C3 FROM V_TEST
WHERE T_TB1_ID=256
在Oracle內部,並不會把WHERE的條件帶入檢視中
而是先得到V_TEST檢視內兩個錶連結之後的結果集
然後再對得到的結果集進行條件匹配
試想,如果檢視中用到的兩個表,都是百萬數量級以上(也許用不了這麼大)
那Oracle便會先去通過連結條件找出兩個百萬級表的相應結果
這種運算是很耗效能的,而且也不是我們所希望的過程
此時如從效能考慮,應把原檢視改為相應的SQL:
SELECT TB1.C1,TB2.C3
FROM TB1 INNER JOIN TB2
ON TB1.TB1_ID=TB2.TB2_ID
WHERE TB1_ID=256
本來以為這個資訊應該是大多數開發員都清除的
可沒想到,在今天的一個3人小商談中,當我提出這個意見的時候
竟然沒有被公司的一位技術副主管認可……無語……
可惜當時公司的DBA不在場,不然多少可以支援一下我的觀點 ◎◎
以後找機會再把自己的試驗情況展示給副主管吧
檢視,對於一些開發員來說,可以起到簡化開發的作用
以前的單位,也有一些開發員會要求資料庫人員編寫一個邏輯較複雜的檢視
然後在程式端就能簡單的進行程式設計了
如果檢視本身只是對某一個表進行復雜處理,效能消耗倒不是特別嚴重
(還是有損耗的,對幾萬個記錄進行復雜處理,對幾十個記錄複雜處理,哪個更快?)
而當檢視存在錶連結,差距就會更明顯
如果系統只是十萬級以下的資料量,那倒還湊合
但對於一些中大型併發系統,造成的影響將是巨大的
所以,對於檢視的使用,也是要有所限制的
今天在做任務的時候,還遇到了一個問題
在儲存過程中組建動態SQL時,最終行程的SQL如果加上偽列ROWNUM
語句中的某個巢狀錶連結就會找不到匹配資料,去了ROWNUM,一切正常
這個問題弄了半天,可惜最終也沒有找到原因……
最終組長用另一種辦法繞開了這個問題
先記下來,等把手頭的活兒忙完要仔細看看
雖然近期還有一堆亂七八糟的任務
但報表組已經開始進行物化檢視的初步建立
等過1、2周有些成果再總結一下吧~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/556359/viewspace-609372/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- 物化檢視妙用__表同步使用物化檢視方法
- 【物化檢視】幾種物化檢視日誌分析
- 普通檢視和物化檢視的區別
- 物化檢視梳理總結
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- oracle物化檢視Oracle
- Oracle普通檢視和物化檢視的區別Oracle
- 物化檢視詳解
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- materialized view (物化檢視)ZedView
- 物化檢視 on commitMIT
- 檢視錶大小
- 物化檢視的快速重新整理測試與物化檢視日誌
- 物化檢視日誌表被DROP後建立物化檢視報錯
- Oracle 物化檢視 詳細錯誤描述 檢視方法Oracle
- 12c 物化檢視 - 理解完全重新整理的物化檢視工作原理
- 物化檢視匯出匯入可能導致物化檢視日誌的失效
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- calcite物化檢視詳解
- Oracle物化檢視詳解Oracle
- ORACLE物化檢視測試Oracle
- Oracle 物化檢視案例分享Oracle
- ZT 物化檢視詳解
- Oracle物化檢視語法Oracle
- ORACLE物化檢視入門Oracle
- 物化檢視-學習篇
- 刷物化檢視並行並行
- oracle物化檢視系列(二)Oracle
- oracle物化檢視系列(一)Oracle
- ORACLE中的物化檢視建立Oracle
- 資料庫的物化檢視資料庫
- mysql檢視錶大小MySql
- Oracle常用檢視錶結構命令Oracle
- v$sql檢視和v$sqlarea檢視的構建SQL
- CUUG oracle物化檢視講解Oracle
- Oracle物化檢視3 - Prebuilt MVOracleUI