Мой MySQL запрос производит очень медленное время обработки.Как я могу ускорить это? - PullRequest
0 голосов
/ 05 августа 2011

Мой запрос дает очень медленный результат. Это явно неприемлемо, и я, должно быть, здесь что-то делаю не так.

У меня есть 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 секунды.

1 Ответ

2 голосов
/ 05 августа 2011

Ознакомьтесь с рекомендациями MySQL по оптимизации:

http://dev.mysql.com/doc/refman/5.0/en/optimization.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...