|
|
|
|
SELECT *, `lastposter`
FROM `forum_messages`
JOIN (
SELECT `login` AS `lastposter`, `id`
FROM `site_users`
) AS `logi` ON `logi`.`id`=`forum_messages`.`userid`
WHERE `topic`='1'
ORDER BY `time` DESC
LIMIT 1
|
запрашиваю логин последнего написавшего в теме форума ( он хранится как userid в таблице users)
В таблице forum_messages ~ 50 000 Записей
В таблице site_users ~ 36 000 Записей..
Без этого запроса все нормально, с пятью такими запросами страница генерируется уже 1.5-2 секунды.. Подскажите как упростить его? | |
|
|
|
|
|
|
|
для: Le bien
(12.09.2008 в 13:35)
| | Занятно... =)
SELECT `site_users`.`login` AS `lastposter`, `site_users`.`id` , `forum_messages`.`userid` , `forum_messages`.`time`, `forum_messages`.`topic`
FROM `site_users` , `forum_messages`
WHERE `site_users`.`id` = `forum_messages`.`userid` AND `forum_messages`.`topic`='1'
ORDER BY `forum_messages`.`time` DESC
LIMIT 1
|
выполняется чудно..
Тоесть вопрос по сути решен, но тема остается открытой, ибо интересно где я облажался | |
|
|
|
|
|
|
|
для: Le bien
(12.09.2008 в 13:35)
| | Вы делаете не просто JOIN, а JOIN какой-то временной таблицы `logi`, которую создали подзапросом. Подзапрос здесь и лишнее. | |
|
|
|
|
|
|
|
для: BinLaden
(12.09.2008 в 17:04)
| | `logi` здесь всего лишь временное название, а не таблица | |
|
|
|
|
|
|
|
для: Le bien
(12.09.2008 в 18:04)
| | Я не отрицал, что это название. Название временной таблицы. Что не понятно-то? | |
|
|
|