我正在使用RSQLite包对本地SQLite数据库进行查询,对于某些查询,RSQLite接口(interface)非常慢。

作为一个特定示例,使用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接口(interface)的性能如此之慢?

请注意,我在Mac OS X 10.6.6上使用R64 2.10.1。

最佳答案

重要的是您拥有的RSQLite的版本。您的R版本似乎已经使用了一年以上,因此,如果您的RSQLite仍然旧,那么它可能是Benoit建议的更旧的引擎(例如3.6.4)。

关于sqlite - 通过RSqlite进行SQLite查询比使用sqlite3命令行界面慢得多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5145054/

10-12 04:10