Qtデータベース抽象化レイヤーを使用してSqlite3とインターフェイスしています。
int x = GetTickCount();
database.exec("UPDATE controls SET dtype=32 WHERE id=2");
qDebug() << GetTickCount()-x;
表は次のとおりです。
CREATE TABLE controls (
id INTEGER PRIMARY KEY AUTOINCREMENT,
internal_id TEXT,
name TEXT COLLATE NOCASE,
config TEXT,
dtype INTEGER,
dconfig TEXT,
val TEXT,
device_id INTEGER REFERENCES devices(id) ON DELETE CASCADE
);
更新時間は約100ミリ秒になります。他に何もデータベースにアクセスしておらず、そのテーブルには合計3つのレコードがあります。
それは私には途方もなく長いようです。10レコードは、完了するのにすでに1秒かかります。これは私がsqliteに期待すべきパフォーマンスですか、それともどこかで私を台無しにしているものですか?SELECTクエリは1msまで十分に高速です。
編集1
だからそれはQtではありません。
sqlite3 *db;
if ( sqlite3_open("example.db",&db ) != SQLITE_OK )
{
qDebug() << "Could not open";
return;
}
int x = GetTickCount();
sqlite3_exec(db, "UPDATE controls SET dtype=3 WHERE id=2",0,0,0);
qDebug() << "Took" << GetTickCount() - x;
sqlite3_close(db);
この男はちょうど同じ時間かかります。