У меня есть таблица, похожая на эту;
@Table
public class Person {
private String name;
private String address;
...
private String score;
}
В моей базе данных сейчас много людей с именами, адресами и оценками. Допустим, я получаю список людей из другой системы, где некоторые люди уже существуют в базе данных, а некоторые являются новыми.
Прежде чем я сохраню их в своей БД, я хочу проверить, существуют ли они уже (избегать дубликатов), и, возможно, изменить счет, если человек, к которому я попал, такой же, как тот, который у меня уже есть, но с другим счетом.
Какой запрос лучше написать, если я хочу выбрать всех людей, которые существуют? (например, то же имя и адрес). Моя таблица людей может содержать огромное количество людей, и список людей, которых я получаю из другой системы, также большой (новый или с обновленными оценками). Мне нужен запрос, который все о производительности :-).
Я использую Java и Hibernate. Кто-нибудь?
РЕДАКТИРОВАТЬ: окончательный sql, вероятно, будет выглядеть примерно так:
select * from Person where name='Paul' AND address='road1
OR name='John' AND address='road2'
OR name='Stella' AND address='road3'
и многие другие. Вышеупомянутый sql atleast объясняет, что я хочу.