У меня есть таблица SQLite
CREATE TABLE "Storage" (
"P" VARCHAR(1024) NOT NULL,
"S" VARCHAR(1024) NOT NULL,
"B" BLOB,
"H" CHAR(40) NOT NULL,
"P" INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY("P")
);
Во время какой-то транзакции мое приложение C ++ выполняет несколько запросов, таких как
SELECT H From Storage WHERE P='/bla/blabla/100' //(1)
SELECT S, B From Storage WHERE P='/bla/blabla/100/200' //(2)
SELECT S, B From Storage WHERE P='/bla/blabla/100/300' //(3)
SELECT S, B From Storage WHERE P='/bla/blabla/100/400' //(4)
После профилирования я выяснил, что время (1) равно итоговое время (2), (3), (4)
Я пытался использовать EXPLAIN QUERY PLAN, чтобы понять, что происходит, но кажется, что DB использует общий подход для всех этих запросов:
SEARCH TABLE Storage USING INDEX sqlite_autoindex_Storage_1 (Path=?)
Так что я не могу понять, почему (1) так долго. У кого-нибудь есть идея?