sqlite3 视图影响性能?

Posted

技术标签:

【中文标题】sqlite3 视图影响性能?【英文标题】:sqlite3 views affect performance? 【发布时间】:2012-02-14 18:39:29 【问题描述】:

试图更好地理解数据库,尤其是 sqlite3:

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

我注意到视图作为模式的一部分存储在数据库本身中。视图是否存储在磁盘上,随着依赖表的更新而动态更新;还是按需评估?

谢谢。

【问题讨论】:

Red this from a blog post:“尽量避免对您经常访问的数据使用视图。如果您负担得起,请创建临时表并在其中插入数据。这将消除由观点评价。”你可以在这里找到它:katastrophos.net/andre/blog/2007/01/04/…我不知道这是不是真的。 【参考方案1】:

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

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

总体而言,您看到的性能提升通常很小。只有当它是您经常执行的快速查询时,它才真正有帮助。如果它是一个不经常执行的慢查询,则与解析查询相关的开销是微不足道的。当然,视图确实提供了很好的组织级别。

【讨论】:

以上是关于sqlite3 视图影响性能?的主要内容,如果未能解决你的问题,请参考以下文章

SQLite3 — 返回受影响的行

这个 Python 代码是不是容易受到 SQL 注入的影响? (SQLite3)

[转载]SQLite3性能优化

Sqlite3写性能优化-每秒百万条写入

sqlite3 性能测试 - 如何快速重置/清除缓存

Sqlite3插入性能测试