假设我在SQLite中创建了一个视图,其中涉及几个表之间的联接和/或子选择。仅创建该视图是否会对使用该视图使用的表造成任何性能损失?
例如,如果我有表foo
和bar
,并且创建了一个名为的视图foo_bar
,则仅创建该视图将使其插入和从foo
and中选择的速度变慢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;
当您实际上不使用它时,视图对任何其他数据库对象均无效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句