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




MySQL.RU - Webboard



Вернуться
Как уйти от создания временной таблицы (CCat) 18/05/2011 - 18:29:23
      Re: EXPLAIN (CCat) 18/05/2011 - 18:50:18
      Re: EXPLAIN (Akina) 19/05/2011 - 10:19:53

> Original message text:
> From: CCat - 18/05/2011 - 18:29:23
> Subject:Как уйти от создания временной таблицы
> -----------------
> Есть таблица с расписанием поездов tr_route. (очень большая, многие тысячи записей)
> И tr_train с подробностями про каждый поезд, но это не так важно.
> Нужно осуществлять выборку, по "откуда едем" и "куда едем", например, "Москва" - "Большие Бодуны".
> Но в таблице нет отдельных полей "станция отбытия" и "станция прибытия", есть просто название станции. Поезд же ходит и туда, и обратно... :)
>
> У меня получается что-то монстроподобное с созданием временной таблицы (tr_route as tr_route_to), но поскольку эта таблица очень большая, это чертовски морозит сервер. :(
> Ну то есть я превращаю одну таблицу в две и делаю выборку из этих двух, сопоставляя их по нужным совпадениям.
> Я понимаю, дикий тупизм.
>
> SELECT DISTINCT blah,blahblah,blahblahblah...
> FROM tr_train, tr_route as tr_route_from, tr_route as tr_route_to
> WHERE tr_route_from.stationname LIKE "Москва"
> AND tr_route_to.stationname LIKE "Большие Бодуны%"
> AND tr_train.trainnumber = tr_route_from.trainnumber
> AND tr_route_from.trainnumber = tr_route_to.trainnumber';
>
>


From: Akina - 19/05/2011 - 10:19:53
Subject:EXPLAIN
-----------------
Во-первых, explain lf.n с консоли, а не распарсенную в ПХП нечитаемую хрень.

Во-вторых, запрос у Вас делает вовсе не то, что Вы хотите сделать.

Исходя из логики того, что надо получить, запрос должен иметь приблизительно такой вид:

SELECT DISTINCT *
FROM tr_train
JOIN tr_route as from
ON (tr_train.trainnumber = from.trainnumber AND from.stationname LIKE "Москва")
JOIN tr_route as to
ON (tr_train.trainnumber = to.trainnumber AND to.stationname LIKE "Большие Бодуны%");

Мелочи доделайте самостоятельно.


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

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

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



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