Почему следующий код очень медленный? - PullRequest
0 голосов
/ 02 июня 2011
SELECT gs.HomeTeamId, 
100*avg(s.P2M)/avg(s.P2A) as P2P FROM gamesstats as gs, stats as s 
WHERE gs.LeagueId = '145' AND 
gs.SeasonStart = '2010' 
GROUP BY gs.HomeTeamId 
HAVING P2P > 52.12765958

Это SQL, который я пытаюсь запросить на моем сервере MySQL.По какой-то причине это занимает слишком много времени.Я могу отдельно получить s.P2M и s.P2A в секунду, но это занимает вечность.Кто-нибудь видит почему?

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

У вас нет условий соединения между gamesstats и stats. Итак, вы создаете декартово произведение , которое может иметь размеры в миллиарды строк.

2 голосов
/ 02 июня 2011

Используя FROM gamesstats as gs, stats as s без объединения в предложении where, вы фактически создаете перекрестное соединение между двумя таблицами. добавить условие соединения.

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