Я хотел бы убедиться, что я сделал все правильно.sqlite добавить новое значение в поле зрения
Существует файл журнала 3Gb, который я хочу проанализировать. Чтобы выполнить все запросы в «: памяти:», чтобы повысить производительность, Я заменяю 10 столбцов текста на целые идентификаторы для каждой строки журналов.
create table if not exists app (
id Integer primary key autoincrement,
value text unique
);
create table if not exists secret (
id integer primary key autoincrement,
value text unique
);
and 10 more tables
create table if not exists raw_log
(
id Integer primary key autoincrement,
app_id INTEGER,
secret_id INTEGER,
and 10 more _id columns
);
и создать представление для запроса и триггер для вставки.
create view if not exists log as
Select
raw_log.id,
app.value as app,
secret.value as secret,
and 10 more ...
from raw_log, app, secret, ..... x 10
where raw_log.app_id = app_id.id and raw_log.secret = secret.id and ... x 10
CREATE TRIGGER insert_log
INSTEAD OF INSERT ON log
FOR EACH ROW BEGIN
INSERT OR IGNORE INTO app(value) VALUES(NEW.app);
INSERT OR IGNORE INTO secret(value) values(NEW.secret);
... x 10
INSERT INTO raw_log(app_id,secret_id, .... x 10)
select app.id, secret.id, x 10
from app, secret, x 10
where app.value = NEW.app
and secret.value = NEW.secret
and ... x 10
END;
вопросы:
Вкладыш с помощью триггера выглядит не работает. Число сущностей в таблице журналов намного меньше, чем должно быть, в то время как количество объектов в секрете и приложение выглядит правильно.
Я думаю, что это связано с тем, что в журнале появляется новое приложение и секрет. Они могут быть вставлены в таблицу без проблем. Однако, поскольку эти изменения еще не выполнены, следующий запрос не может успешно ссылаться на эти значения.
Если да, то как я могу исправить эти запросы?
INSERT INTO raw_log(app_id,secret_id, .... x 10)
select app.id, secret.id, x 10
from app, secret, x 10
where app.value = NEW.app
and secret.value = NEW.secret
and ... x 10
, возможно, некоторые из столбцов, где обнуляют и так, при выполнении счета, не посчитаны? Вы разрешили это? Меня интересует ваше решение. – cybork
Вы проверили мое решение? –