SQlite работает медленно на одном конкретном запросе - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть таблица 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) так долго. У кого-нибудь есть идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...