如果創建數千個視圖,是否會妨礙數據庫性能。我的意思是在oracle中創建數千個視圖有任何問題。請解釋,因爲我在這方面是新的......我正在使用oracle ...在數據庫中創建視圖和性能。,
回答
視圖與創建它的選擇一樣重,但Oracle負載均衡和單選不能損害數據庫。如果您有數千個併發選擇,那麼您可能會遇到問題。意見的數量並不重要,但它們的重要程度以及使用量有多大。
你實際上需要展示視圖代碼並告訴你實際上想要做什麼。
Oracle視圖是 複雜查詢的封裝,必須與 保持一致使用。以下是 記住的關鍵事實:
視圖並非旨在提高SQL 的性能。當你需要 封裝SQL時,你應該把它放在存儲過程中的 而不是 使用一個視圖。視圖隱藏了底層查詢的複雜性 ,使得 對於無經驗的程序員 和最終用戶制定查詢更加容易。 視圖可用於調整 提示的查詢,前提是視圖始終在正確的上下文中使用 。
source: Guard against performance issues when using Oracle hints and views
-1不同意 - 視圖不適合每種情況,並且可能有問題,但用存儲過程替換它們會更糟糕。至少有鑑於此,Oracle有機會對其進行優化。 – 2010-01-29 02:32:37
的這些觀點的簡單的存在應該不影響性能的。但是,一旦開始使用這些觀點,可能會對性能產生負面影響。 Oracle試圖「記住」它所看到的每條語句的計劃,但它通過比較源代碼(SQL)來比較語句。您的數千個視圖都將命名爲不同的名稱,因爲您不能使用同一名稱的多個視圖,因此每次使用其中一個視圖時,Oracle將不得不完全解析SQL,即使它是基本爲
SELECT * FROM VIEW_1;
和
SELECT * FROM VIEW_2;
所有這些重新解析肯定會需要一些時間。
這些視圖各有什麼不同?我認爲退一步考慮其他可能性可能是一個好主意。我想問的問題包括:
- 這裏要做什麼?
- 爲什麼需要數千種不同的視圖?
- 有沒有其他方法可以完成需要完成的任務,而無需創建所有這些視圖?
我不知道1和2的答案,但我相當肯定第3個答案是「是」。
祝你好運。
是的。需要確定爲什麼需要這麼多視圖 - 在某些情況下,如果唯一發生變化的是(例如)WHERE子句中的某些謂詞,則可能會將視圖與會話上下文變量組合在一起。 – 2010-01-29 02:34:44
如果優化器足夠聰明,視圖不應該影響性能。我記得Views在影響性能時與其他數據庫引擎有關。正如在許多表演案例中 - 我建議衡量你的具體案例。
- 1. 創建數據庫視圖vs創建休眠映射 - 性能
- 2. 在數據庫中創建virtuemart視圖
- 3. 在h2數據庫上創建視圖
- 4. MySQL創建視圖和性能
- 5. PHP和數據庫:視圖,函數和存儲過程性能
- 6. 數據庫視圖性能問題
- 7. 數據庫視圖創建問題
- 8. 使用NHibernate創建數據庫視圖
- 9. 不能在android中創建數據庫
- 10. 創建視頻數據庫
- 11. 從多個數據庫中的數據創建視圖
- 12. 在多個數據庫中創建視圖
- 13. 在Ruby on Rails中創建數據庫視圖
- 14. 在特定數據庫中創建SQL Server視圖
- 15. 如何使用C#在SQL Server數據庫中創建視圖?
- 16. 在代碼中創建數據庫視圖
- 17. 如何在Derby中創建缺失的數據庫視圖?
- 18. 在附加數據庫中創建成員表,SPROC,視圖
- 19. 爲什麼你在數據庫中創建一個視圖?
- 20. 我不能用sqlplus(權限不足)在Oracle中創建數據庫視圖
- 21. 在不同的數據庫中創建視圖並在數據庫中獲取列和一些字段
- 22. 動態視圖創建性能問題
- 23. 創建視圖,SQL查詢性能
- 24. 我應該讓用戶在數據庫中創建表還是創建視圖?
- 25. Android的數據庫創建和列表視圖
- 26. 使用eclipse和JPA從數據庫視圖創建實體
- 27. 如何在SQL Server中創建數據庫的數據庫圖
- 28. 需要訪問和編輯屬性在數據庫中創建
- 29. 不能創建在Postgres數據庫
- 30. SQlite3和數據庫創建
有沒有可能您的數千個視圖基本上是相同的視圖,但對於不同的用戶? – 2010-01-28 11:49:35