In addition, - make a new index only on column1 - move the prepare before the loop to avoid reparsing the SELECT each time - use sqlite3_bind_* and sqlite3_reset in the loop. - move finalize after the loop. - query the test table directly - not the temporary ttest table. - don't SELECT * if you only need a column or two
--- RaghavendraK 70574 <[EMAIL PROTECTED]> wrote: > int main() > { > sqlite3* db; > int ret = sqlite3_open("abc",&db); > > char* errmsg; > char buf[1024]; > sprintf(buf,"create temporary table ttest(column1 text,column2 text,primary > key > (column1,column2));"); > ret = sqlite3_exec(db , buf, NULL ,NULL,&errmsg); > > > sprintf(buf,"insert into ttest select * from test;"); > ret = sqlite3_exec(db , buf, NULL ,NULL,&errmsg); > > > //read all the srvName from file and store it in arr and query. > fstream fin("query.sql",ios::in); > string data[100000]; > > for(int j=0;!fin.eof();j++) > { > fin>>data[j]; > //cout<<data[j]<<endl; > } > fin.close(); > > cout<<"Calling Test Now"<<endl; > sleep(1); > > //Now Query Data. > time_t start = time(0); > list<string> lst; > > char* szError=0; > const char* szTail=0; > sqlite3_stmt* pVM; > > for(int k=0;k<100000;k++) > { > sprintf(buf,"select * from ttest where column1 = > '%s'",data[k].c_str()); > > > ret = sqlite3_prepare(db, buf, -1, &pVM, &szTail); > ret = sqlite3_step(pVM); > //lst.push_back(); > ret = sqlite3_finalize(pVM); > } > // > time_t end = time(0); > cout<<"start="<<start<<endl; > cout<<"end="<<end<<endl; > > return 0; > } > > //Result: It takes 17 sec to read 100,000 records. Can it be reduced to 1 > sec.??? ____________________________________________________________________________________ Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more. http://mobile.yahoo.com/go?refer=1GNXIC ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------