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

标签 sqlite r

我正在使用 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 中的等效查询需要两分钟多一点,并且 100% 使用了我的一个 CPU:

> 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 的 SQLilte 查询比 sqlite3 命令行界面慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145054/

相关文章:

c - 使用 SQLite 和 Fast Math 时出现 GCC 错误 : "SQLite will not work correctly with the -ffast-math option of GCC"

c# - 在 Sqlite 中更新 TOP

mysql - 一个 SQL 查询来获取距离给定坐标一定距离内的所有城市?

r - 填写常量值,dplyr中满足条件时加1

r - 取出数据子集,取平均值,创建一个新的数据框。有更容易的方法吗?

sqlite - 最后 10 行的平均结果

node.js - NodeJS - sqlite3,数据同步

r - 复杂的条件变异 : Create new variable with conditional mutating using only past observations for a given participant?

r - 每组 n 和 n-2 行之间的差异

r - 快速检查 Rcpp 中的缺失值