#database #algorithm #solution
#База данных #алгоритм #решение
Вопрос:
Я хотел бы получить несколько советов о том, как реализовать решение для следующего У меня есть список объектов. (сотни элементов, например 500-1000 или более). У меня есть таблица в базе данных записей для таких объектов. В базе данных миллион записей. Мне нужно отправить список объектов в базу данных и сообщить обратно со списком дубликатов, если они найдены. Первоначальное решение, загрузить все из базы данных в Java, затем сравнить списки — плохое решение. У нас проблема с нехваткой памяти, пытаемся загрузить все миллионы записей из базы данных.
Комментарии:
1. Это зависит от очень многих факторов, таких как используемая база данных, язык, платформа и так далее. Пожалуйста, прочтите это: tinyurl.com/so-hints
Ответ №1:
Есть ли в объекте какой-либо идентификатор, по которому вы можете посмотреть его в базе данных? Если да, вы можете сделать следующее:
-
Получите идентификаторы для вашего списка объектов
-
Поместите их в оператор SELECT, чтобы увидеть, какие из них уже есть в базе данных
-
Поместите объекты, которых еще нет в таблице, в инструкцию INSERT
Если список, который вы получаете в 1, слишком велик для ВЫБОРА, вы также можете поместить их во временную таблицу и выполнить инструкцию JOIN с таблицей объектов.
Приветствия
Комментарии:
1. 1 ИМО, последнее утверждение является решением. Я бы не стал пытаться передавать 500-1000 ключей всем сразу. Лучше поместить их в промежуточную таблицу и использовать базу данных для выполнения запросов к миллионам строк.
2. Большое спасибо. Особенно часть запроса объединения. Первая часть — это то, к чему я направлялся, но способ обработки сотен записей в «1» вызывал беспокойство. Последняя часть действительно полезна.