| 
| 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(...)
 
 
 
 
 
 
 
 |  |  |  |