Ответ 1
Используйте SELECT WHERE IN() Синтаксис, чтобы получить набор результатов с необходимыми данными, а затем перебрать его в свой код. Таким образом, вы только запрашиваете БД один раз и получаете только необходимую информацию.
Через веб-сервис мое приложение получает список идентификаторов. С этим списком я должен искать поле, по одному на идентификатор. Если поле не существует, значение должно быть нулевым (оно должно быть показано).
Мне интересно, какой будет лучший подход. Сначала я подумал, что лучше создать временную таблицу с идентификатором, а затем присоединить ее к таблице, содержащей данные, но если я прав, это займет как минимум 1 запрос на один идентификатор, чтобы вставить его во временную таблицу. В этом случае кажется, что я мог бы просто перебрать список идентификаторов в моем приложении и запросить базу данных 1 на 1. Правильно ли это? Какой подход вы можете посоветовать?
привет,
Коэнов
Используйте SELECT WHERE IN() Синтаксис, чтобы получить набор результатов с необходимыми данными, а затем перебрать его в свой код. Таким образом, вы только запрашиваете БД один раз и получаете только необходимую информацию.
Отображение нулей - это трюк, вам нужно присоединить таблицу к себе, поэтому на запись есть два индекса. Просто выполнение запроса 1 к 1 для каждого идентификатора потребует только одного поиска индекса.
На практике он не будет в два раза медленнее, так как идентификатор будет находиться в кеше ключа к моменту выполнения второго поиска.
Другой вариант - сделать вывод с использованием входных идентификаторов и использовать "IN", как ранее предлагалось. Нулевые записи не будут отображаться в запросе, но это будет нормально, так как вы знаете, что было запрошено.