SQLite3 数据库查询优化

Posted

技术标签:

【中文标题】SQLite3 数据库查询优化【英文标题】:SQLite3 Database Query Optimization 【发布时间】:2012-04-30 17:31:08 【问题描述】:

我想要一个组合 4 个表格的结果。以前我使用 4 个不同的查询来提高性能,从加入表和从单个表查询开始。但是性能并没有提高。

我后来了解到,SQLite 将 join 语句转换为“where 子句”,我可以直接使用“Where”子句代替 join,这样可以节省一些 CPU 时间。

但是“Where”子句的问题是,如果四个条件中的一个条件失败,则结果集为空。如果一个条件失败,我想要一个填充了其余列(匹配其他条件)的表,而不是一个空表。有没有办法做到这一点?谢谢!

【问题讨论】:

你能发布SQL语句,也许还有四个表的架构? 【参考方案1】:

您是否考虑过使用 LEFT OUTER JOIN ?

例如

SELECT Customers.AcctNumber, Customers.Custname, catalogsales.InvoiceNo 
FROM Customers 
LEFT OUTER JOIN catalogsales ON Customers.Acctnumber = catalogsales.AcctNumber

在本例中,如果 "catalogsales" 中没有任何匹配的行,那么它仍然会返回 "left" 表中的数据,在本例中为 "Customers"

没有示例 SQL,很难知道您尝试了什么。

【讨论】:

以上是关于SQLite3 数据库查询优化的主要内容,如果未能解决你的问题,请参考以下文章

针对 20,000 多次更新优化 Sqlite3

SQL 优化器/执行计划 - 重复子查询

sqlite3 中用于按月检索数据的查询是啥

sqlite3创建数据库之后无法插入查询

Python内置数据结构操作VS sqlite3操作

Sqlite3数据库Python基础操作