Производительность mysql ГДЕ ... В - PullRequest
8 голосов
/ 13 декабря 2011

У меня MySQL запросы с оператором WHERE IN.

SELECT * FROM table1 WHERE id IN (1, 2, 15, 17, 150 ....)

Как это будет работать с сотнями идентификаторов в предложении IN?это разработано, чтобы работать со многими аргументами?(моя таблица будет иметь сотни тысяч строк, а id - это основное поле)

есть ли лучший способ сделать это?

РЕДАКТИРОВАТЬ: Я получаюИдентификаторы из набора результатов запроса поискового сервера.Так что не из базы данных.Полагаю, оператор соединения не сработает.

Ответы [ 2 ]

3 голосов
/ 13 декабря 2011

Я не уверен, как работает WHERE ... IN, но для меня это звучит как JOIN или, возможно, лучшим выбором здесь будет выборка.

См. Также: MYSQL ИЛИ против производительности IN и http://www.slideshare.net/techdude/how-to-kill-mysql-performance

2 голосов
/ 13 декабря 2011

Вы должны поместить IN предложение "arguments", например, в table2.

Afterfter вы делаете это:

SELECT t1.* FROM table1 t1
INNER JOIN table2 t2 ON t1.Id = t2.Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...