У меня есть небольшая база данных во встроенной системе с несколькими таблицами, которые я хочу ограничить до 1000 строк. Для этого я настроил триггер, который выполняется после каждой вставки новой строки. Код триггера:
CREATE TRIGGER after_insertion_trigger
AFTER INSERT ON table
BEGIN
DELETE FROM table
WHERE uuid IN (
SELECT uuid FROM table ORDER BY sent ASC, timestamp DESC LIMIT -1 OFFSET 1000
);
END;
Проблема в том, что вставки в полную таблицу при использовании триггеров занимают более 3 минут каждый вместо 0,4 секунд, что является временем, необходимым для завершения обычной транзакции вставки и удаления предложений.
Время, необходимое для выполнения вставки при использовании триггеров, похоже, увеличивается по мере увеличения количества строк в базе данных.
Я нашел много разных тем в Stack Overflow и других сетях о триггерах, но ни одна из них не помогла мне решить проблему. Я использую SQLite 3.7.9.
Кто-нибудь знает, почему у меня такая низкая производительность? Мне не нужна огромная производительность, потому что вставки происходят не очень часто, но 3 минуты для вставки недопустимы.