ak-o
@ak-o
web-developer

Как в mysql правильно реализовать выборку и поиск нужных записей по данным из массива?

Задача: На вход идет массив текстовых данных, необходимо получить ID строк из таблицы mysql где value=massive[$i++];

Записей в БД много, массивы скорее всего будут большие, как правильно реализовать выборку всех ID (ключ=значение)?

пример:
таблица
id__somename___text
1___blablablla___xxxx
2___blablablla___yyyy
3___blablablla___dddd

$massive = (
'xxxx',
'dddd'
);

Результат: 1,3;

Архитектуру БД к сожалению переделать на данный момент не представляется возможным.
  • Вопрос задан
  • 4641 просмотр
Решения вопроса 1
KEKSOV
@KEKSOV
Нужно сравнить два вариант и выбрать наиболее быстрый из них:
1. Использовать IN. Так как есть ряд ограничений на его использование в MySQL, необходимо опытным путем подобрать оптимальное число аргументов в списке IN и делать несколько запросов.
2. Более правильный (на мой взгляд) вариант это использовать prepared выражение: создаете такое выражение и в цикле по вашему массиву выполняете его, должно работать очень быстро.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `id` FROM `table` WHERE `text` IN ('xxxx', 'dddd')

Главное не упереться в ограничение максимальной длины пакета - параметр max_allowed_packet в my.cnf
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы