I just encountered very curious case in Sqlite. I have very simple data base with only one table and one index:
"CREATE TABLE IF NOT EXISTS notes(id INTEGER PRIMARY KEY, note TEXT)"; My updates to the simple text database were very slow. Extremely slow! I changed my code and achieved 1000 speed improvement. Nevertheless, something must be wrong with sqlite3_bind_parameter_index functions !? My Update function looks as follows: int UpdateNotesRecord(sqlite3 *handle, int idArg, CString note) { sqlite3_stmt *stmt; int rc; #if 0 // 100 updates with 5 charcter string takes 12 000 ms char *sql = "UPDATE notes SET note=:cNote WHERE id=:idArg"; rc = sqlite3_prepare_v2(handle, sql, (int) strlen(sql), &stmt, NULL/*&tail*/); if(rc) PrintError("UPDATE prepare_v2",rc,handle); // idArg rc = sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt,":idArg"), idArg); if(rc) PrintError("bind idArg error",rc,handle); int byteCount = note.GetLength(); char *p = note.GetBuffer(); rc = sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt,":cNote"), p, byteCount, SQLITE_STATIC); if(rc) PrintError("bind note text error",rc,handle); #endif #if 1 // 100 updates with 5 character string takes 90 ms // magnitude of 1000 less than with code above! char *sql = "UPDATE notes SET note=? WHERE id=?"; rc = sqlite3_prepare_v2(handle, sql, (int) strlen(sql), &stmt, NULL/*&tail*/); if(rc) PrintError("UPDATE prepare_v2",rc,handle); // idArg rc = sqlite3_bind_int(stmt, 1, idArg); if(rc) PrintError("bind idArg error",rc,handle); // note int byteCount = note.GetLength(); char *p = note.GetBuffer(); rc = sqlite3_bind_text(stmt, 2, p, byteCount, SQLITE_STATIC); if(rc) PrintError("bind note text error",rc,handle); #endif // UPDATE STEP rc = sqlite3_step(stmt); if(rc != SQLITE_DONE) { PrintError("update step error",rc,handle); } rc = sqlite3_finalize(stmt); if(rc) PrintError("finalize update error",rc,handle); return rc; } Thank you for reading. Any comment greatly appreciated. Samuel __________________________________________________________________ Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now http://ca.toolbar.yahoo.com. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users