Как проверить наличие нескольких идентификаторов одним запросом - PullRequest
0 голосов
/ 27 апреля 2010

Я пытаюсь найти способ проверить, есть ли некоторые идентификаторы в БД, если идентификатор уже есть в БД, я, естественно, постараюсь избежать обработки строки, которую он представляет

Сейчас я делаю один запрос для проверки идентификатора, но я думаю, что это слишком дорого по времени, потому что, если я проверяю 20 идентификаторов, сценарий занимает до 30 секунд

Я знаю, что могу сделать простой ГДЕ id = 1 ИЛИ id = 2 ИЛИ id = 3, но я хотел бы знать об определенной группе идентификаторов, которые уже есть в базе данных, а какие нет

Я не знаю много о транзакциях, но, возможно, это может быть полезно или что-то еще

любые мысли высоко ценятся!

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

30 секунд для 20 запросов на одно значение - длительное время. Вы создали индекс в поле ID, чтобы ускорить процесс?

Также, если вы создаете unique key в поле идентификатора, вы можете просто вставить все идентификаторы. База данных будет выдавать ошибки и не вставлять те идентификаторы, которые уже существуют, но вы можете игнорировать эти ошибки.

1 голос
/ 27 апреля 2010

Зависит от того, как вы определяете «группу идентификаторов»

Если вы можете сделать это с помощью запроса, вы, вероятно, можете использовать предложение объединения или существующего.

например

SELECT firstname
  from people p 
  where not exists (select 1 from otherpeople op where op.firstname = p.firstname)

Это выберет всех людей, которых нет в таблице других людей

Если у вас просто есть список идентификаторов, используйте WHERE NOT IN (1,3,4 ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...