2014-08-29 36 views
1

假設我在SQLite中創建了一個涉及幾個表之間的連接和/或子選擇的視圖。是否簡單地創建該視圖會導致對使用視圖使用的表的任何性能損失?未使用視圖的性能損失?

舉例來說,如果我有表foobar,我創建一個名爲foo_bar觀點,只會創建視圖,能慢插入或foobar選擇?

如果它有什麼區別,我在Android上使用SQLite 3.7.11。

回答

3

當您創建視圖時,它只是查詢的簡寫。 換句話說,當你執行這些語句:

CREATE VIEW foo_bar AS SELECT * FROM foo LEFT JOIN bar USING (foo_id); 
SELECT * FROM foo_bar WHERE baz IS NULL; 

查詢只是在內部改寫成這樣:

SELECT * FROM (SELECT * FROM foo LEFT JOIN bar USING (foo_id)) WHERE baz IS NULL; 

當你實際上並沒有使用它,一個視圖有沒有影響任何其他數據庫對象。