ignore into input_a_b select csv.a, csv.b from csv where csv.a in(select input.a from input); В таком виде зависает, не знаю даже насколько,
а если csv.b заменить на '':
insert or ignore into input_a_b select csv.a, '' from csv where csv.a in(select input.a from input); то отрабатывает за полторы секунды.
Поля a,b текстовые. Во всех таблицах есть индексы по полям a, b. База данных Sqlite. таблица csv содержит 155 000 000 строк. таблица input 100 000.
explain query plan:
SEARCH TABLE csv USING INDEX iin_idx (iin=?)
USING INDEX sqlite_autoindex_input_1 FOR IN-OPERATOR
insert or ignore into input_a_b select csv.a, csv.b from csv where csv.a in(select input.a from input); insert or ignore into input_a_b select csv.a, '' from csv where csv.a in(select input.a from input);
Ну, похоже, в первом случае нет покрывающего запрос индекса, а во втором -- есть.
Так а что ты хочешь то? Что решил делать?
Обсуждают сегодня