Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
21375



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |