Так что мне приходится иметь дело с базой данных, у которой нет индексов (не мой дизайн, это чертовски расстраивает меня). Я выполняю запрос, который занимает приблизительно три секунды, и мне нужно, чтобы он был быстрее.
Вот соответствующие таблицы и столбцы:
gs_pass_data au_entry ground_station
-gs_pass_data_id -au_id -ground_station_id
-start_time -gs_pass_data_id -ground_station_name
-end_time -comments
-ground_station_id
И мой запрос:
SELECT DISTINCT gs_pass_data_id,start_time,end_time,
ground_station_name FROM gs_pass_data
JOIN ground_station
ON gs_pass_data.ground_station_id =
ground_station.ground_station_id
JOIN au_entry ON au_entry.gs_pass_data_id =
gs_pass_data.gs_pass_data_id
WHERE (start_time BETWEEN @prevTime AND @nextTime)
AND comments = 'AU is identified.'
ORDER BY start_time
Я пытался использовать EXISTS вместо DISTINCT без улучшений. Я прочитал все, что могу об оптимизации SQL, но я не могу довести этот запрос до приемлемого времени (разумное время <0,5 секунды). Любые идеи будут с благодарностью. </p>