Почему поиск уникальных значений в двух таблицах Excel работает медленно и как сделать чтобы было быстрее?
Есть два файла CSV в каждом по 100 тыс записей. Задача найти строки которые которые есть в первом файле, но нет во втором. Сама процедура поиска предполагается по ключу записей т.е.
Файл 1:
1
2
4
5
Файл 2:
1
2
3
4
5
Итого вывод должен быть 3 т.к. в первом файле этого ID нет, но он есть во втором.
Сейчас все делается средствами Excel. Люди жалуются на то, что подобная сверка происходит долго. На сколько долго сказать не могу. Думаю десятки минут.
Отсюда вопросы.
Почему в Excel все так медленно.
Будет ли разница в скорости если если решение сделать на C# или к примеру Python.
Будет ли профит если все выгружать в какой нить SQLite и делать его средствами?
Хрустальный шар на профилактике, но основные причины перечислены в моём профиле. Python из коробки в 7 раз медленнее VBA, впрочем, никто не мешает вам его использовать. Такого объёма данные лучше хранить в БД.
у ёкселя есть excel power query ("редактор запросов" по-русски), как раз для таких вещей.
а если сейчас вы проверяете строки в одной таблице поиском по второй, можно сильно ускорить процесс отсортировав вторую таблицу по этой колонке, и используя поиск значения с третьим параметром (интервальный поиск) и дополнительной проверкой на совпадение потом.
А ключи отсортированы?
Десятки минут даже для Excel как-то медленно.
Это как будто для каждого ключа одного файла пробегать все ключи другого.
Если взять два отсортированных списка и пройтись по ним, то недостающие ключи можно за один проход найти - это секунды для 100000 записей.