如何提高使用QT的sqlite3数据库的性能?

时间:2012-04-16 15:50:33

标签: sqlite qsqltablemodel

我在sqlite3数据库上使用QSQlQuery。为了获取特定项目,我填充了4个不同表格的结果。我认为加入表会提高性能/速度并更快地获得结果。所以我最初加入了2个表,但是在加入表后需要更长的时间来获取数据(?)

任何有关如何改善表现的建议都会非常感激。另外,我正在查看http://qt-project.org/doc/qt-4.8/qsqlquery.html,并提到使用setForwardOnly可以提高某些数据库的性能。知道它是否适用于SQLite3?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据此链接,

http://sqlite.org/cvstrac/wiki?p=PerformanceTuning

SQLite通过将USING clausing转换为一些额外的WHERE子句来实现JOIN USING。它与NATURAL JOIN和JOIN ON相同。因此,尽管这些构造可能对人类读者有所帮助,但它们对SQLite的查询优化器并没有任何影响。

- 我加入两个表是错误的,并期望获取速度更快。它不适用于SQLite数据库。相反,使用“where”子句并直接连接两个结果肯定会对性能产生一些积极的影响。

(例如:

从A,B中选择*,其中A.id = B.id,其中A.id = 1;而不是

从A.id = B.id的A左外连接B中选择*,其中A.id = 1)

SQLite在编译之前将第一个语句转换为第二个语句,您可以通过直接使用第二个语句来节省少量的CPU时间