Подтвердить что ты не робот

SQLilte запрос намного медленнее через RSqlite, чем интерфейс командной строки sqlite3

Я использую пакет 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.

4b9b3361

Ответ 1

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