12
我正在使用RSQLite包查詢本地SQLite數據庫,對於某些查詢,RSQLite接口速度很慢。通過RSqlite比sqlite3命令行界面SQLilte查詢要慢得多
作爲具體的例子,下面的查詢在一秒需要使用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接口的性能如此之慢?
請注意,我在Mac OS X 10.6.6上使用R64 2.10.1。
是否確定查詢不僅僅是通過命令行運行時在服務器上緩存? – 2011-02-28 17:47:34
@Daniel Dickison:SQLite沒有服務器。 – Benoit 2011-03-01 12:27:29
也許RSQLite庫與shell(3.7.5)不是相同的引擎版本。 – Benoit 2011-03-01 12:28:34