Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Индексы в BETWEEN при join-е (RXL) 19/03/2003 - 14:55:33
      Re: Индексы в BETWEEN при join-е (Dinky) 19/03/2003 - 18:30:23
      Re: Индексы в BETWEEN при join-е (Валентин) 19/03/2003 - 20:58:15
      Re: Индексы в BETWEEN при join-е (XODOK) 20/03/2003 - 03:52:15
      Re: Индексы в BETWEEN при join-е (RXL) 20/03/2003 - 14:06:45
      Re: Индексы в BETWEEN при join-е (Валентин) 20/03/2003 - 17:01:27
      Re: Индексы в BETWEEN при join-е (Dinky) 20/03/2003 - 19:49:20
      Re: Индексы в BETWEEN при join-е (RXL) 21/03/2003 - 12:56:17

> Original message text:
> From: RXL - 19/03/2003 - 14:55:33
> Subject:Индексы в BETWEEN при join-е
> -----------------
> Мучаюсь вот такой проблемой.
> Есть две таблицы:
> t1 - много строк (сейчас 106т, прирост 1-10т/сутки).
> id int not null unique,
> ...полезная нагрузка...
> t2 - мало строк (16 строк, прирост 8/сутки).
> begin int not null,
> end int NULL,
> ...прочие данные...
>
> В каждой строке таблицы t2 в полях begin и end хранится диапазон для t1.id . Нужно выбрать все строки в t1 соответствующие каждой строке в t2 (для всех строк t2).
>
> SELECT t1.* FROM t1,t2 WHERE t1.id BETWEEN t2.begin AND t2.end AND t2.end IS NOT NULL;
>
> Запрос работает правильно, но слишком долго - EXPLAIN говорит:
>
> table type possible_keys key key_len ref rows Extra
> t2 ALL NULL NULL NULL NULL 16 where used
> t1 ALL serial NULL NULL NULL 106422 where used
>
> Если убрать из запроса t2 и в BETWEEN поставить константы, то запрос проходит мнговенно.
>
> Пробовал разные виды JOIN-а. Читал мануал (и не раз, и не только сейчас ;) - BETWEEN допускается для работы с индексами. Не пойму в чем дело - как должно работать логически понятно, а как работает - нет. Кто-нибудь знает в чем дело?
> Версия MySQL 3.23.49.
>
>


From: Валентин - 20/03/2003 - 17:01:27
Subject:Индексы в BETWEEN при join-е
-----------------
1)WHERE t1.id BETWEEN 1 AND 10;
насколько я понял - здесь выдается один интервал
2)WHERE t1.id BETWEEN t2.begin AND t2.end; # t2.begin=1 t2.end=10
а вот здесь - столько интервалов ?
Я к сожалению такие запросы не делал, может я чего-то не так понял, но t2.begin - 16 значений и t2.end - 16 значений что дает 16*16 комбинаций.




























[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
7323



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |