aliencrowdman
|
Carpal Tunnel
|
|
|
|
Рег.: 16.09.2006
|
Сообщений: 6677
|
|
Рейтинг: 2818
|
|
Mysql SELECT WHERE большой список условий
11.11.2010 04:08
|
|
|
Как лучше сделать следующее: есть таблица ~5к записей из нее выбрать записи WHERE col1=cond1 OR col1=cond2 .... OR col1=cond150
просто тупо одним селектом? (подходящих условий может быть 200-400) или как-то лучше?
|
|
|
aliencrowdman
|
Carpal Tunnel
|
|
|
|
Рег.: 16.09.2006
|
Сообщений: 6677
|
|
Рейтинг: 2818
|
|
|
нагуглил IN - я так понимаю это то, что надо?
|
|
|
Fury
|
Down Under Resident
|
|
|
|
Рег.: 12.09.2003
|
Сообщений: 2013
|
Из: The most livable city
|
Рейтинг: 886
|
|
|
угу, я бы пользовался им
|
Не обязательно быть лучше всех - достаточно просто быть лучше, чем неделю назад |
|
CROTishka
|
Shai-Hulud
|
|
|
|
Рег.: 09.06.2004
|
Сообщений: 31423
|
Из: - под земли
|
Рейтинг: 3655
|
|
|
индекс только создай по своей col1
|
|
|
lomo
|
fynjy
|
|
|
|
Рег.: 05.04.2005
|
Сообщений: 8790
|
Из: Моск
|
Рейтинг: 989
|
|
|
where работает быстрее чем in. Но выглядит тупо, согласен.
|
|
maloi
|
Зануда
|
|
|
|
Рег.: 09.05.2006
|
Сообщений: 6506
|
Из: $(pwd)
|
Рейтинг: 2880
|
|
Re: Mysql SELECT WHERE большой список условий
[re: lomo]
11.11.2010 09:34
|
|
|
>where работает быстрее чем in
/0
|
Помни: убив анимешника, ты повышаешь скорость сети на 5% |
|
horror
|
гонобобель
|
|
|
|
Рег.: 30.09.2002
|
Сообщений: 3783
|
|
Рейтинг: 2135
|
|
Re: Mysql SELECT WHERE большой список условий
[re: lomo]
11.11.2010 10:09
|
|
|
Quote:
where работает быстрее чем in
это особенность mysql? или свойственно всем движкам DB? я думал, что скорость выполнения запроса с where и in одинаковая
|
|
BorisL
|
постоянный отец
|
|
|
|
Рег.: 23.02.2004
|
Сообщений: 17631
|
Из: torrent.msu
|
Рейтинг: 3560
|
|
Re: Mysql SELECT WHERE большой список условий
[re: horror]
11.11.2010 10:29
|
|
|
В интернетах встречаются утверждения, что из-за особенностей оптимизатора запросов MySQL IN при наличии соответствующих индексов работает несколько быстрее, чем явное перечисление через OR.
|
|
aliencrowdman
|
Carpal Tunnel
|
|
|
|
Рег.: 16.09.2006
|
Сообщений: 6677
|
|
Рейтинг: 2818
|
|
Re: Mysql SELECT WHERE большой список условий
[re: CROTishka]
11.11.2010 10:56
|
|
|
Quote:
индекс только создай по своей col1
таюлица innoDB не позволяет делать текстовые индексы
|
|
|
gasanych
|
|
|
|
|
Рег.: 07.12.2006
|
Сообщений: 1243
|
Из: Москва
|
Рейтинг: 221
|
|
|
не знаю, как в MySql, но в оракле есть ограние на число условий в IN - 1000. Возможно, если такая ситуация возникнет, придется делать несколько IN(...)OR ... IN(...)
|
|
maloi
|
Зануда
|
|
|
|
Рег.: 09.05.2006
|
Сообщений: 6506
|
Из: $(pwd)
|
Рейтинг: 2880
|
|
Re: Mysql SELECT WHERE большой список условий
[re: horror]
11.11.2010 20:12
|
|
|
>это особенность mysql? или свойственно всем движкам DB?
я где-то слышал, что если делать in (select id from ...) то мускуль это разворачивает в join и работает это медленнее, чем in (1,2,3). поскольку сам мускулем никогда не пользовался, то хз.
|
Помни: убив анимешника, ты повышаешь скорость сети на 5% |
|
Druxa
|
Дрюха
|
|
|
|
Рег.: 27.06.2003
|
Сообщений: 2722
|
Из: Троицк
|
Рейтинг: 1973
|
|
Re: Mysql SELECT WHERE большой список условий
[re: gasanych]
12.11.2010 02:38
|
|
|
> в оракле есть ограние на число условий в IN - 1000 в mysql единственное ограничение в которое реально можно упереться это на полную длину запроса.
|
нет, я не богат... я сказочно не богат... но я и не умен... |
|
Druxa
|
Дрюха
|
|
|
|
Рег.: 27.06.2003
|
Сообщений: 2722
|
Из: Троицк
|
Рейтинг: 1973
|
|
Re: Mysql SELECT WHERE большой список условий
[re: gasanych]
12.11.2010 02:42
|
|
|
> придется делать несколько IN(...)OR ... IN(...) с этим поосторожнее, в mysql (не знаю как в последних версиях но точно такое было) запрос where col1 in (...) or col2 in (...) не использует индексы по col1 и col2, так что приходится писать union :-\ для одной и той же колонки не знаю, но опасность есть надо проверять.
|
нет, я не богат... я сказочно не богат... но я и не умен... |
|
CROTishka
|
Shai-Hulud
|
|
|
|
Рег.: 09.06.2004
|
Сообщений: 31423
|
Из: - под земли
|
Рейтинг: 3655
|
|
Re: Mysql SELECT WHERE большой список условий
[re: gasanych]
12.11.2010 11:44
|
|
|
В ответ на:
в оракле есть ограние на число условий в IN - 1000.
ибо некуй В ответ на:
Возможно, если такая ситуация возникнет, придется делать несколько IN(...)OR ... IN(...)
для таких случаев есть джойны.
|
|
|