Я использую следующую таблицу:
1 0051ML66220600132482 06:00:00 06:00:00 1538 100 0 1
2 0051ML66220600132482 06:00:00 06:00:00 1540 200 0 0
3 0051ML66220600132482 06:00:00 06:00:00 1541 300 0 0
4 0051ML66220600132482 06:01:00 06:01:00 1542 400 0 0
5 0051ML66220600132482 06:01:00 06:01:00 1543 500 0 0
6 0051ML66220600132482 06:02:00 06:02:00 1544 600 0 0
7 0051ML66220600132482 06:03:00 06:03:00 1546 700 0 0
Структура таблицы, как показано ниже:
> ------------------------------------------------------------------
> -- TABLE stop_times
> ------------------------------------------------------------------
>
> CREATE TABLE stop_times ( id int(12),
> trip_id varchar(100),
> arrival_time varchar(8),
> arrival_time_seconds int(100),
> departure_time varchar(8),
> departure_time_seconds int(100),
> stop_id varchar(100),
> stop_sequence varchar(100),
> pickup_type varchar(2),
> drop_off_type varchar(2) );
Я пытаюсь получить DISTINCT trip_id
, соответствует ли он и пункту назначения, и прибытию stop_id
Я пробовал приведенный ниже SQL без везения:
select DISTINCT trip_id from stop_times where stop_id=1538 AND stop_id =1540;
Где должен производиться: 0051ML66220600132482
Я также пробовал INNER JOIN SQL, как показано ниже:
SELECT
t.trip_id,
start_s.stop_name as departure_stop,
end_s.stop_name as arrival_stop
FROM
trips t
INNER JOIN stop_times start_st ON t.trip_id = start_st.trip_id
INNER JOIN stops start_s ON start_st.stop_id = start_s.stop_id
INNER JOIN stop_times end_st ON t.trip_id = end_st.trip_id
INNER JOIN stops end_s ON end_st.stop_id = end_s.stop_id
WHERE
start_s.stop_id = 1538
AND end_s.stop_id = 1540;
Но это ооочень медленно и занимает около 8-15 секунд для этого простого запроса.
Объяснение Добавлено:
Каков самый быстрый/лучший способ сделать этот запрос?
CREATE
. - person EternalHour   schedule 30.04.2015