2012-02-14 99 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。它可以解析它一次,存储它的执行策略,然后在每次查询实际运行时使用它。

你看到的性能提升通常很小,在事情的宏伟计划中。它真的只有在你经常执行一个快速查询时才有帮助。如果它是一个很慢执行的缓慢查询,与解析查询相关的开销就不重要了。当然,观点提供了一个很好的组织层次。