Xpoint
   [напомнить пароль]

Оптимизация запроса

Метки: [без меток]
[удл]
2004-11-21 15:25:13 [обр] Дмитрий Терёхин(0/1)[досье]

Как лучше сформировать таблицу футбольного чемпионата? Какими запросами, по какой таблице БД, как индексировать..
Пока результаты матчей хранятся следующим образом:
id1 (хозяева)
id2 (гости)
season (номер сезона)
tur (номер тура)
div (дивизион)
type (тип турнира)
g1 (голы хозяев)
g2 (голы гостей)

например следующий запрос выбирает все команды одного дивизиона и их количество побед.

select t.id,count(r.id1) from teams t left outer join
res r on ((r.id1=t.id and r.g1>r.g2) or (r.id2=t.id and r.g2>r.g1)) where r.season='2' and r.type='champ'
and r.div='Рос1' group by t.id

Но работает это слишком долго.. не говоря уже о том что кроме побед надо выбрать ничьи, поражения, мячи.
Подскажите как оптимизировать таблицу и сформировать запросы.

спустя 30 минут [обр] Алексей В. Иванов(2/2861)[досье]
Вы таблицы индексировали?
спустя 2 часа 29 минут [обр] Дмитрий Попов(17/509)[досье]
Дмитрий Терёхин[досье]
Какая БД?
спустя 8 часов [обр] Дмитрий Терёхин(0/1)[досье]

mysql.

Индексировал, но подскажите как сделать это лучше для такого запроса.

спустя 13 часов [обр] Алексей В. Иванов(2/2861)[досье]
Дмитрий Терёхин[досье]
Что такое у Вас таблица teams и почему у нее неуникальные id? Что означает ((r.id1=t.id and r.g1>r.g2) or (r.id2=t.id and r.g2>r.g1)) ?
спустя 16 минут [обр] Дмитрий Терёхин(0/1)[досье]
id уникальные.
r.id1=t.id and r.g1>r.g2
означает что для команды id выбирается число записей в таблице результатов где команда id играет дома и забивает больше мячей чем соперник
r.id2=t.id and r.g2>r.g1
- обратное. команда играет в гостях и опять же побеждает
Powered by POEM™ Engine Copyright © 2002-2005