Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=9827133&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 11:29:57 2016
Кодировка: Windows-1251
Mysql SELECT WHERE большой список условий - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
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
  Re: Mysql SELECT WHERE большой список условий [re: aliencrowdman]
      11.11.2010 04:15
1

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



Fury
Down Under Resident

Рег.: 12.09.2003
Сообщений: 2013
Из: The most livable city
Рейтинг: 886
  Re: Mysql SELECT WHERE большой список условий [re: aliencrowdman]
      11.11.2010 05:20
 

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



Не обязательно быть лучше всех - достаточно просто быть лучше, чем неделю назад ;)
CROTishka
Shai-Hulud

Рег.: 09.06.2004
Сообщений: 31423
Из: - под земли
Рейтинг: 3655
  Re: Mysql SELECT WHERE большой список условий [re: aliencrowdman]
      11.11.2010 08:06
-2

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



lomo
fynjy

Рег.: 05.04.2005
Сообщений: 8790
Из: Моск
Рейтинг: 989
  Re: Mysql SELECT WHERE большой список условий [re: aliencrowdman]
      11.11.2010 09:22
-6

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

maloi
Зануда

Рег.: 09.05.2006
Сообщений: 6506
Из: $(pwd)
Рейтинг: 2880
  Re: Mysql SELECT WHERE большой список условий [re: lomo]
      11.11.2010 09:34
2

>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
  Re: Mysql SELECT WHERE большой список условий [re: aliencrowdman]
      11.11.2010 15:56
 

не знаю, как в 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(...)


для таких случаев есть джойны.



Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в