2011-02-28 11 views
12

की तुलना में SQLSte क्वेरी RSqlite के माध्यम से बहुत धीमी है, मैं स्थानीय SQLite डेटाबेस से क्वेरी बनाने के लिए RSQLite पैकेज का उपयोग कर रहा हूं, और कुछ प्रश्नों के लिए RSQLite इंटरफ़ेस काफी धीमा है।एसक्यूएलआईटी 3 कमांड लाइन इंटरफ़ेस

एक विशिष्ट उदाहरण के रूप में, निम्न क्वेरी एक दूसरे के नीचे ले जाता है 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 

लेकिन आर में बराबर क्वेरी दो मिनट से कुछ अधिक समय लेता है और की 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 

आर इंटरफ़ेस के माध्यम से प्रदर्शन इतना धीमा क्यों है?

ध्यान दें कि मैक ओएस एक्स 10.6.6 पर मैं R64 2.10.1 का उपयोग कर रहा हूं।

+0

क्या आप सुनिश्चित हैं कि क्वेरी को सर्वर पर कैश नहीं किया गया था जब आप इसे कमांड लाइन के माध्यम से चलाते थे? –

+6

@ डैनियल डिकिसन: SQLite का कोई सर्वर नहीं है। – Benoit

+1

शायद आरएसक्लाइट लाइब्रेरी शैल (3.7.5) की तुलना में एक ही इंजन संस्करण नहीं है। – Benoit

उत्तर

3

आपके पास आरएसक्यूलाइट का संस्करण क्या मायने रखता है। आर का आपका संस्करण एक वर्ष से अधिक पुराना प्रतीत होता है, इसलिए यदि आपका आरएसक्यूलाइट उतना ही पुराना है तो यह बेनोइट द्वारा सुझाए गए एक पुराने इंजन (उदाहरण के लिए 3.6.4) हो सकता है।