1
假設我在SQLite中創建了一個涉及幾個表之間的連接和/或子選擇的視圖。是否簡單地創建該視圖會導致對使用視圖使用的表的任何性能損失?未使用視圖的性能損失?
舉例來說,如果我有表foo
和bar
,我創建一個名爲foo_bar
觀點,只會創建視圖,能慢插入或foo
和bar
選擇?
如果它有什麼區別,我在Android上使用SQLite 3.7.11。
假設我在SQLite中創建了一個涉及幾個表之間的連接和/或子選擇的視圖。是否簡單地創建該視圖會導致對使用視圖使用的表的任何性能損失?未使用視圖的性能損失?
舉例來說,如果我有表foo
和bar
,我創建一個名爲foo_bar
觀點,只會創建視圖,能慢插入或foo
和bar
選擇?
如果它有什麼區別,我在Android上使用SQLite 3.7.11。
當您創建視圖時,它只是查詢的簡寫。 換句話說,當你執行這些語句:
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;
當你實際上並沒有使用它,一個視圖有沒有影響任何其他數據庫對象。