2012-02-14 139 views
6

試圖更好地理解數據庫,尤其是sqlite3:sqlite3視圖影響性能?

sqlite3中的視圖主要是組織特性,允許將複雜的查詢分解爲一系列較小的數據;或者視圖實際上是否會影響使用它們的查詢的性能?

我注意到視圖作爲模式的一部分存儲在數據庫本身中。視圖存儲在磁盤上,隨着從屬表的更新而動態更新;還是需要評估?

謝謝。

+0

從博客文章中發出紅色代碼: 「儘量避免對您經常訪問的數據使用視圖,如果您負擔得起,請創建臨時表並在其中插入數據,這樣可以消除視圖評估帶來的開銷。 「 你可以在這裏找到它:http://katastrophos.net/andre/blog/2007/01/04/sqlite-performance-tuning-and-optimization-on-embedded-systems/我不知道這是否屬實。 – Joelmob 2012-02-14 18:59:17

回答

9

視圖總是按需執行(sqlite3或其他),所以它們返回的結果永遠不會被永久存儲。

至於性能,雖然我無法專門與sqlite3說話,但通常使用視圖的開銷會稍小,因爲查詢解析器/計劃器不必在每次執行時重新解析原始sql。它可以解析它一次,存儲它的執行策略,然後在每次查詢實際運行時使用它。

你看到的性能提升通常很小,在事情的宏偉計劃中。它真的只有在你經常執行一個快速查詢時纔有幫助。如果它是一個很慢執行的緩慢查詢,與解析查詢相關的開銷就不重要了。當然,觀點提供了一個很好的組織層次。