|
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
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.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
7323
|
|