SQLilte查询通过RSqlite比sqlite3命令行界面慢得多

Lor*_*ein 12 sqlite r

我正在使用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
Run Code Online (Sandbox Code Playgroud)

但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
Run Code Online (Sandbox Code Playgroud)

为什么通过R接口的性能如此之慢?

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

Ton*_*Lee 3

重要的是您拥有的 RSQLite 版本。你的 R 版本似乎已经有一年多了,所以如果你的 RSQLite 也同样旧,那么它可能是一个更旧的引擎(例如,3.6.4),正如 Benoit 所建议的。