У меня есть таблица, в которой около 1/2 миллиона записей.
Каждый месяц мы получаем около 1/2 миллиона записей для импорта. В настоящее время они помещаются в другую таблицу в БД, но в конечном итоге будут загружены непосредственно из текстового файла. Для каждой из этих новых записей я должен определить, есть ли у нас эта запись, а если нет, то ее нужно вставить. Однако, если у нас есть запись, она должна быть обновлена. Есть логика, чтобы эти обновления содержали код C #.
Программа командной строки C # обрабатывает импорт этих новых данных, и поэтому сейчас существует 1/2 миллиона операторов выбора - по одному для каждой записи. Затем, группа (снова около 1/2 миллиона) операторов вставки и обновления генерируется и запускается для базы данных.
Это займет около 6 часов для запуска на моей рабочей станции. У вас есть идеи, как это ускорить? Мне нужно выполнить около 60 таких крупных операций импорта, чтобы привести базу данных к текущему месяцу, а затем загружать новые данные один раз в месяц.
Я думаю, что одна область, которая может быть улучшена, это 1/2 миллиона операторов выбора. Возможно, я мог бы выполнить один оператор select, чтобы получить все строки, сохранить их в памяти и найти их. Могу ли я использовать список для этого или есть лучший класс? Мне придется искать по двум свойствам (или полям БД).