Запрос SQLilte намного медленнее через RSqlite, чем интерфейс командной строки sqlite3 - PullRequest
12 голосов
/ 28 февраля 2011

Я использую пакет 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 занимает чуть более двух минутиспользует 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 намного ниже?

Обратите внимание, что я использую R64 2.10.1 в Mac OS X 10.6.6.

1 Ответ

3 голосов
/ 07 марта 2011

Важна версия вашего RSQLite.Похоже, вашей версии R больше года, поэтому, если ваш RSQLite столь же стар, это может быть гораздо более старый движок (например, 3.6.4), как это предлагает Benoit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...