поиск дубликатов между моим списком и тем, что находится в базе данных

#database #algorithm #solution

#База данных #алгоритм #решение

Вопрос:

Я хотел бы получить несколько советов о том, как реализовать решение для следующего У меня есть список объектов. (сотни элементов, например 500-1000 или более). У меня есть таблица в базе данных записей для таких объектов. В базе данных миллион записей. Мне нужно отправить список объектов в базу данных и сообщить обратно со списком дубликатов, если они найдены. Первоначальное решение, загрузить все из базы данных в Java, затем сравнить списки — плохое решение. У нас проблема с нехваткой памяти, пытаемся загрузить все миллионы записей из базы данных.

Комментарии:

1. Это зависит от очень многих факторов, таких как используемая база данных, язык, платформа и так далее. Пожалуйста, прочтите это: tinyurl.com/so-hints

Ответ №1:

Есть ли в объекте какой-либо идентификатор, по которому вы можете посмотреть его в базе данных? Если да, вы можете сделать следующее:

  1. Получите идентификаторы для вашего списка объектов

  2. Поместите их в оператор SELECT, чтобы увидеть, какие из них уже есть в базе данных

  3. Поместите объекты, которых еще нет в таблице, в инструкцию INSERT

Если список, который вы получаете в 1, слишком велик для ВЫБОРА, вы также можете поместить их во временную таблицу и выполнить инструкцию JOIN с таблицей объектов.

Приветствия

Комментарии:

1. 1 ИМО, последнее утверждение является решением. Я бы не стал пытаться передавать 500-1000 ключей всем сразу. Лучше поместить их в промежуточную таблицу и использовать базу данных для выполнения запросов к миллионам строк.

2. Большое спасибо. Особенно часть запроса объединения. Первая часть — это то, к чему я направлялся, но способ обработки сотен записей в «1» вызывал беспокойство. Последняя часть действительно полезна.