我正在使用RSQLite包对本地SQLite数据库进行查询,对于某些查询,RSQLite接口非常慢。
作为一个具体示例,以下查询使用sqlite3命令行实用程序运行不到一秒:
$ sqlite3 data/svn.db
SQLite version 3.7.5
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select count(distinct svn_path.revision) FROM src INNER JOIN svn_path ON src.filename=svn_path.path;
5039
但R中的等效查询花了两分多钟时间并且使用了我的一个CPU的100%:
> library(RSQLite)
Loading required package: DBI
> con <- dbConnect(SQLite(), dbname="data/svn.db")
> dbGetQuery(con, "select count(distinct svn_path.revision) FROM src INNER JOIN svn_path ON src.filename=svn_path.path")
count(distinct svn_path.revision)
1 5039
为什么通过R接口的性能如此之慢?
请注意,我在Mac OS X 10.6.6上使用R64 2.10.1。
答案 0 :(得分:3)
重要的是您拥有的RSQLite版本。你的R版本似乎已经超过一年了,所以如果你的RSQLite和它一样旧,它可能是一个比Benoit建议的更老的引擎(例如3.6.4)。