|
MySQL.RU - Webboard
Вернуться
Оптимизация SQL запроса (Андрей) 08/04/2005 - 23:11:29
Re: Оптимизация SQL запроса! (Роберт) 10/04/2005 - 14:48:22
From: Андрей - 08/04/2005 - 23:11:29
Subject:Оптимизация SQL запроса
-----------------
есть запрос
====================
SELECT users.id AS uid, games.id AS gid, max(games.end_time) AS time
FROM users, games
WHERE (users.id = games.black OR users.id = games.white)
GROUP BY users.id
====================
задача запроса выбрать такую запись из games для каждого users.id, в которой games.end_time было бы максимальным
Запрос выполняется крайне медленно. И если в WHERE заменить на
WHERE (users.id = games.black)
то запрос выполняется в 10 раз быстрее!
но при этом не хватает данных о games.white и нужно формировать еще один запрос с WHERE (users.id = games.white), а потом из них выбирать максимальный games.end_time
нельзя ли оптимизировать этот запрос так, чтобы все работало быстро? сам пока придумал такое:
=================
SELECT uid, gid, max(a.time) as time FROM
(SELECT users.id AS uid, games.id AS gid, max(games.end_time) AS time
FROM users, games
WHERE (users.id = games.black)
GROUP BY users.id
UNION
SELECT users.id AS uid, games.id AS gid, max(games.end_time) AS time
FROM users, games
WHERE (users.id = games.white)
GROUP BY users.id
ORDER BY uid) AS a GROUP BY uid
============
но кажется что это как-то громоздко, хоть и работает в 5-6 раз быстрее первоначального запроса
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
21375
|
|