Новости
Документация
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: CCat - 18/05/2011 - 18:50:18
Subject:EXPLAIN
-----------------
Ну вот что выдает explain

[0]=>
string(1) "1"
["id"]=>
string(1) "1"
[1]=>
string(6) "SIMPLE"
["select_type"]=>
string(6) "SIMPLE"
[2]=>
string(11) "tr_route_to"
["table"]=>
string(11) "tr_route_to"
[3]=>
string(5) "range"
["type"]=>
string(5) "range"
[4]=>
string(11) "stationname"
["possible_keys"]=>
string(11) "stationname"
[5]=>
string(11) "stationname"
["key"]=>
string(11) "stationname"
[6]=>
string(2) "68"
["key_len"]=>
string(2) "68"
[7]=>
string(0) ""
["ref"]=>
string(0) ""
[8]=>
string(3) "204"
["rows"]=>
string(3) "204"
[9]=>
string(28) "Using where; Using temporary"
["Extra"]=>
string(28) "Using where; Using temporary"
}
array(20) {
[0]=>
string(1) "1"
["id"]=>
string(1) "1"
[1]=>
string(6) "SIMPLE"
["select_type"]=>
string(6) "SIMPLE"
[2]=>
string(13) "tr_route_from"
["table"]=>
string(13) "tr_route_from"
[3]=>
string(5) "range"
["type"]=>
string(5) "range"
[4]=>
string(11) "stationname"
["possible_keys"]=>
string(11) "stationname"
[5]=>
string(11) "stationname"
["key"]=>
string(11) "stationname"
[6]=>
string(2) "68"
["key_len"]=>
string(2) "68"
[7]=>
string(0) ""
["ref"]=>
string(0) ""
[8]=>
string(4) "3794"
["rows"]=>
string(4) "3794"
[9]=>
string(11) "Using where"
["Extra"]=>
string(11) "Using where"
}
array(20) {
[0]=>
string(1) "1"
["id"]=>
string(1) "1"
[1]=>
string(6) "SIMPLE"
["select_type"]=>
string(6) "SIMPLE"
[2]=>
string(8) "tr_train"
["table"]=>
string(8) "tr_train"
[3]=>
string(3) "ALL"
["type"]=>
string(3) "ALL"
[4]=>
string(0) ""
["possible_keys"]=>
string(0) ""
[5]=>
string(0) ""
["key"]=>
string(0) ""
[6]=>
string(0) ""
["key_len"]=>
string(0) ""
[7]=>
string(0) ""
["ref"]=>
string(0) ""
[8]=>
string(4) "8770"
["rows"]=>
string(4) "8770"
[9]=>
string(11) "Using where"
["Extra"]=>
string(11) "Using where"
}


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

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

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



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