Oracle

如何在大 ORACLE 視圖上提高 SELECT 性能?

  • August 1, 2018

對於頻繁更改的基表數據,我無法使用物化視圖。the_big_view 中有大約 60 萬行。我需要做的查詢是:SELECT * FROM the_big_view WHERE student_number=’*****’,它返回任意數據行。

如果我在“CREATE VIEW the_big_view AS …”中添加一個“ORDER BY student_number”子句,這樣做好嗎?

不,視圖中的訂單將無濟於事。你可能想做兩件事。首先,您應該確保student_number 在基礎表中被索引。另外,如果大視圖連接多個表,您應該確保連接列被索引。

其次,您可能想要使用這樣的數字:

WHERE student_number=123456

代替

WHERE student_number='123456'

如果 student_number 是數字以避免類型轉換。

你想做幾件事。

  1. 確保您的視圖沒有做不必要的工作,例如對結果進行排序或其他不需要太多的數據操作。
  2. 檢查以確保您沒有在此視圖中使用其他視圖,因為當您開始在視圖中使用視圖時,您可能會失去命中索引的能力。
  3. 確保您不僅對將所有表連接在一起的內容以及使用者將搜尋的內容擁有適當的索引。
  4. 返回並再次查看視圖,看看可以優化哪些內容以提高性能,以及如果不需要,可以完全刪除哪些內容。
  5. 將視圖中的數據限制為您需要的數據,這可能意味著您需要創建一個新視圖。這將有助於限制返回的數據,從而提高性能。

因為這裡沒有提供關於視圖的資訊,所以唯一可以提供的幫助是關於編寫視圖的一般提示。

引用自:https://dba.stackexchange.com/questions/213750