SQLITE 3.7.13和3.8.0之间的性能差异

时间:2014-02-12 11:06:24

标签: sql performance sqlite query-performance

更改SQLITE版本会对我们的查询产生巨大的性能影响。我们观察到一些查询的加速超过25,但与此同时我们观察到其他查询的速度减慢了2。 可能导致这种性能差异的原因是什么?

比较执行时间时,只有执行环境发生变化。相同的硬件,相同的DB,相同的查询。 SQLITE正在通过Perl DBI使用。

查询1的运行时间:

 SQLITE 3.8.0(Fedora 19):
 real   0m0.674s
 user   0m0.650s
 sys    0m0.021s

 SQLITE 3.7.13(Debian Wheezy):
 real   0m17.242s
 user   0m17.169s
 sys    0m0.028s

查询2的运行时间:

 SQLITE 3.8.0(Fedora 19):
 real   0m0.303s
 user   0m0.284s
 sys    0m0.017s


 SQLITE 3.7.13(Debian Wheezy):
 real   0m0.168s
 user   0m0.160s
 sys    0m0.007s

不确定它是否有用,但是用于调整数据库的一些参数:

 PRAGMA synchronous = OFF
 PRAGMA journal_mode = OFF
 PRAGMA locking_mode = EXCLUSIVE
 PRAGMA temp_store = MEMORY
 PRAGMA PAGE_SIZE = 4096
 PRAGMA cache_size = 125000

1 个答案:

答案 0 :(得分:0)

感谢@CL。的帮助,我访问了提到低质量索引的next generation query planner页面,其中“表格中有超过10行或20行具有相同的值” 。我有一个只包含重复外键的表的索引。删除索引修复了问题。