Mysql SELECT WHERE большой список условий

PooH

Как лучше сделать следующее:
есть таблица ~5к записей
из нее выбрать записи WHERE col1=cond1 OR col1=cond2 .... OR col1=cond150
просто тупо одним селектом? (подходящих условий может быть 200-400)
или как-то лучше?

PooH

нагуглил IN - я так понимаю это то, что надо?

ifani

угу, я бы пользовался им

kill-still

индекс только создай по своей col1 ;)

Ve9443

where работает быстрее чем in. Но выглядит тупо, согласен.

serega1604

>where работает быстрее чем in
/0

Maurog

where работает быстрее чем in
это особенность mysql? или свойственно всем движкам DB?
я думал, что скорость выполнения запроса с where и in одинаковая

AlexV769

В интернетах встречаются утверждения, что из-за особенностей оптимизатора запросов MySQL IN при наличии соответствующих индексов работает несколько быстрее, чем явное перечисление через OR.

PooH

индекс только создай по своей col1
таюлица innoDB не позволяет делать текстовые индексы :(

redzor

не знаю, как в MySql, но в оракле есть ограние на число условий в IN - 1000. Возможно, если такая ситуация возникнет, придется делать несколько IN(...)OR ... IN(...)

serega1604

>это особенность mysql? или свойственно всем движкам DB?
я где-то слышал, что если делать in (select id from ...) то мускуль это разворачивает в join и работает это медленнее, чем in (1,2,3).
поскольку сам мускулем никогда не пользовался, то хз.

rosali

> в оракле есть ограние на число условий в IN - 1000
в mysql единственное ограничение в которое реально можно упереться это на полную длину запроса.

rosali

> придется делать несколько IN(...)OR ... IN(...)
с этим поосторожнее, в mysql (не знаю как в последних версиях но точно такое было) запрос where col1 in (...) or col2 in (...) не использует индексы по col1 и col2, так что приходится писать union :-\
для одной и той же колонки не знаю, но опасность есть :) надо проверять.

kill-still

 
в оракле есть ограние на число условий в IN - 1000.
ибо некуй
 
Возможно, если такая ситуация возникнет, придется делать несколько IN(...)OR ... IN(...)
для таких случаев есть джойны.
Оставить комментарий
Имя или ник:
Комментарий: