Есть одна sqlite база в которой есть таблица
И есть запрос - посчитать сколько новых юзеров было за последнее время, тех у кого есть записи за последнее время но нет ранее
И уже сейчас когда записей всего 120т запрос выполняется несколько секунд блокируя всю базу. Как его можно ускорить?
CREATE TABLE IF NOT EXISTS msg_counter (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id TEXT,
access_time REAL,
model_used TEXT
)
CREATE INDEX IF NOT EXISTS idx_access_time ON msg_counter (access_time)
CREATE INDEX IF NOT EXISTS idx_user_id ON msg_counter (user_id)
CREATE INDEX IF NOT EXISTS idx_model_used ON msg_counter (model_used)
SELECT COUNT(DISTINCT user_id)
FROM msg_counter
WHERE access_time > ?
AND NOT EXISTS (
SELECT 1
FROM msg_counter AS mc2
WHERE mc2.user_id = msg_counter.user_id
AND mc2.access_time <= ?
)