Я работаю над обработкой большого набора данных GTFS и создаю дополнительную таблицу из существующих данных.Для этого я использую следующий запрос.
INSERT INTO connections
(SELECT
stop_timesD.departure_time,
stop_timesD.stop_sequence AS stop_sequence_departure,
stop_timesD.stop_id AS stop_id_departure,
trips.trip_id,
trips.direction_id,
stop_timesA.arrival_time,
stop_timesA.stop_sequence AS stop_sequence_arrival,
stop_timesA.stop_id AS stop_id_arrival
FROM trips
INNER JOIN stop_times AS stop_timesD ON trips.trip_id = stop_timesD.trip_id
INNER JOIN stop_times AS stop_timesA ON trips.trip_id = stop_timesA.trip_id
INNER JOIN calendar_dates ON trips.service_id = calendar_dates.service_id
WHERE calendar_dates.date = '20190302' AND stop_timesD.stop_sequence < stop_timesA.stop_sequence);
Теперь это производит набор данных, который мне требуется правильно.Однако таблица, в которую она вставлена, кажется не способной к запросу, поскольку каждый запрос (т. Е. SELECT * FROM connections;) не возвращает никаких данных.Кроме того, сервер продолжает использовать большую мощность ЦП после завершения запроса и выдает большое значение для «свободных данных» (я подозреваю, что это либо очистка, либо индексация).
Использование модифицированного запроса, который создаетНовая таблица (CREATE TABLE connections SELECT ...) действительно дает желаемый результат, даже если в разметке таблицы нет различий.