Мой запрос дает очень медленный результат. Это явно неприемлемо, и я, должно быть, здесь что-то делаю не так.
У меня есть 4 таблицы в запросе. Tr_id относится к одной транзакции, которая может содержать приложения от нескольких человек, которые хотят отправиться в несколько разных стран. Я хочу отобразить информацию для каждого человека и каждой страны в отдельной строке, например:
1298 2011-08-04 2011-09-01 Joe Bloggs Platinum_Level China
1298 2011-08-04 2011-09-01 Jane Bloggs Platinum_Level China
1298 2011-08-04 2011-09-14 Joe Bloggs Platinum_Level Japan
1298 2011-08-04 2011-09-14 Jane Bloggs Platinum_Level Japan
Мой запрос, который я использую:
SELECT tr_id, tr_datecreated, tr_depart, trp_name, trp_lname, trv_processlevel,
visa_destcountry FROM transactions, people, trvisas, visas
WHERE tr_datecreated >= "2009-09-02 00:00:00" AND tr_datecreated <= "2009-09-04 23:59:59"
AND tr_id = trp_trid
AND tr_id = trv_trid
AND trv_visaid = visa_code
В базе данных много данных, и я хочу увеличить сложность запроса, только добавив фильтры для сужения результатов. Это будет означать доступ к большему количеству таблиц, проведение дополнительных сравнений и т. Д. Я уверен, что это не слишком сложно, и это можно сделать в разумные сроки.
Благодарен за любые советы.
EDIT:
Фактически, после сопоставления моего кода, сам запрос MySQL занимает 53 секунды.