sqlite3视图会影响性能吗?

May*_*tel 10 sql sqlite views

试图更好地理解数据库,特别是sqlite3:

sqlite3中的视图主要是组织功能,允许将复杂查询分解为一系列较小的查询; 或者视图是否会影响使用它们的查询的性能?

我注意到视图作为模式的一部分存储在数据库本身中.视图是否存储在磁盘上,并在更新依赖表时动态更新; 或者他们是否按需评估?

谢谢.

dav*_*off 14

视图将始终按需执行(sqlite3或其他),因此它们返回的结果永远不会持久存储.

至于性能,虽然我不能专门与sqlite3说话,但通常使用视图会略微减少开销,因为查询解析器/规划器不必在每次执行时重新解析原始sql.它可以解析一次,存储其执行策略,然后在每次实际运行查询时使用它.

在宏观方案中,你所看到的性能提升通常很小.如果它是一个经常执行的快速查询,它真的有用.如果您的查询很慢,则不经常执行,与解析查询相关的开销是微不足道的.当然,观点确实提供了一个很好的组织层次.