我在sqlite3数据库上使用QSQlQuery。为了获取特定项目,我填充了4个不同表格的结果。我认为加入表会提高性能/速度并更快地获得结果。所以我最初加入了2个表,但是在加入表后需要更长的时间来获取数据(?)
任何有关如何改善表现的建议都会非常感激。另外,我正在查看http://qt-project.org/doc/qt-4.8/qsqlquery.html,并提到使用setForwardOnly可以提高某些数据库的性能。知道它是否适用于SQLite3?
谢谢!
答案 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时间