Получить реляционные предметы - самые быстрые - PullRequest
1 голос
/ 03 июня 2011

Я храню реляционные элементы в полях в виде идентификаторов, разделенных запятыми, например:

,4,12,8,16,198,

Причиной начальных и конечных запятых является поиск с помощью LIKE '%,id,%'

Я пытаюсь написать функцию начальной загрузки для извлечения всех этих элементов на основе идентификатора в порядке идентификаторов.Мой вопрос заключается в том, что является наиболее эффективным способом получения этих строк?Варианты, о которых я подумал:

  • Разнесение в массив, цикл по массиву и выполнение отдельных запросов на выборку (слишком много запросов?)
  • Один выбор с использованием IN () (я надеваюНе думаете, что это сохранит порядок?)
  • Выберите все элементы в связанной таблице и затем выберите из этого массива на основе идентификаторов (преимущество может заключаться в наличии только одного запроса?)

Возможно, стоит упомянуть, что я использую PDO, поэтому я могу подготовить операторы один раз, а затем выполнить их несколько раз для разных идентификаторов ... хотя я не знаю, насколько это влияет на производительность.

Любая помощь будетс благодарностью!

Спасибо.

1 Ответ

1 голос
/ 03 июня 2011

Я бы пошел на

ORDER BY FIELD(`id`, 4, 12, 8, 16, 198)

в сочетании с IN

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