Mysql SELECT WHERE большой список условий
нагуглил IN - я так понимаю это то, что надо?
угу, я бы пользовался им
индекс только создай по своей col1
where работает быстрее чем in. Но выглядит тупо, согласен.
/0
where работает быстрее чем inэто особенность mysql? или свойственно всем движкам DB?
я думал, что скорость выполнения запроса с where и in одинаковая
В интернетах встречаются утверждения, что из-за особенностей оптимизатора запросов MySQL IN при наличии соответствующих индексов работает несколько быстрее, чем явное перечисление через OR.
индекс только создай по своей col1таюлица innoDB не позволяет делать текстовые индексы
не знаю, как в MySql, но в оракле есть ограние на число условий в IN - 1000. Возможно, если такая ситуация возникнет, придется делать несколько IN(...)OR ... IN(...)
я где-то слышал, что если делать in (select id from ...) то мускуль это разворачивает в join и работает это медленнее, чем in (1,2,3).
поскольку сам мускулем никогда не пользовался, то хз.
в mysql единственное ограничение в которое реально можно упереться это на полную длину запроса.
с этим поосторожнее, в mysql (не знаю как в последних версиях но точно такое было) запрос where col1 in (...) or col2 in (...) не использует индексы по col1 и col2, так что приходится писать union :-\
для одной и той же колонки не знаю, но опасность есть надо проверять.
в оракле есть ограние на число условий в IN - 1000.ибо некуй
Возможно, если такая ситуация возникнет, придется делать несколько IN(...)OR ... IN(...)для таких случаев есть джойны.
Оставить комментарий
PooH
Как лучше сделать следующее:есть таблица ~5к записей
из нее выбрать записи WHERE col1=cond1 OR col1=cond2 .... OR col1=cond150
просто тупо одним селектом? (подходящих условий может быть 200-400)
или как-то лучше?