Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос очень перегружает сервер 
:(
    Опции темы
Gold Dragon
Дата 23.4.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



Вот есть такой запрос.. Висит у меня на главной странице. Если приходит достаточное количество народа, то страница висит секунд по 30. Как отключаю этот модуль, всё нормально грузится.. Похоже больше нечему грузить

вот запрос
Код

select a.*, cc.cmtid, cc.cmttext, cc.cmtname  
 from foto_datsogallery as a, foto_datsogallery_comments as cc, 
 foto_datsogallery_catg as ca 
 where a.id=cc.cmtpic 
 and a.catid=ca.cid 
 and cc.cmtid=(select max(ab.cmtid) 
 from foto_datsogallery_comments as ab 
 where a.id=ab.cmtpic) 
 and a.published='1' 
 and a.approved=1 
 and ca.published='1' 
 and ca.access<=1 
 group by a.id order by cc.cmtid desc limit 5

может ли это так сильно влиять на базу? И есть ли вариант этот запрос упростить или ускорить?

Это сообщение отредактировал(а) Gold Dragon - 23.4.2008, 18:48


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
skyboy
Дата 24.4.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



explain что показывает?
PM MAIL   Вверх
Gold Dragon
Дата 24.4.2008, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



skyboy, а где это посмотреть и как?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 24.4.2008, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



выполнить свой запрос, добавив к нему спереди слово explain
и посмотреть, что выведет.
соответственно, выполнять лучше не из скрипта, а из консоли. или, на худой конец - из phpmyadmin
PM   Вверх
Gold Dragon
Дата 24.4.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



так.. запрос такой
Код

EXPLAIN SELECT a . * , cc.cmtid, cc.cmttext, cc.cmtname
FROM foto_datsogallery AS a, foto_datsogallery_comments AS cc, foto_datsogallery_catg AS ca
WHERE a.id = cc.cmtpic
AND a.catid = ca.cid
AND cc.cmtid = ( 
SELECT max( ab.cmtid ) 
FROM foto_datsogallery_comments AS ab
WHERE a.id = ab.cmtpic ) 
AND a.published = '1'
AND a.approved =1
AND ca.published = '1'
AND ca.access <=2
GROUP BY a.id
ORDER BY cc.cmtid DESC 
LIMIT 5

выдаёт это

Цитата

id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra 
1    PRIMARY    a    index    PRIMARY    PRIMARY    4    NULL    681    Using where; Using temporary; Using filesort
1    PRIMARY    ca    eq_ref    PRIMARY    PRIMARY    4    foto.a.catid    1    Using where
1    PRIMARY    cc    eq_ref    PRIMARY    PRIMARY    4    func    1    Using where
2    DEPENDENT SUBQUERY    ab    ALL    NULL    NULL    NULL    NULL    3548    Using where


Добавлено через 38 секунд
только я не понимаю что это значит


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Бонифаций
Дата 24.4.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



Using temporary; Using filesort

Означает что на каждый запрос создается временный файл, где сортируются данные.  Кроме того dependent subquery у вас выполнится 681 раз, каждый раз обрабатывая по 3548 записей. То есть ему надо просмотреть  681*3548 = 2416188 записей чтобы дать ответ.


1) filesort - обычное делао, если order by ... desc. Вот без desc никак не получится?
2) subselect сами по себе вешь небыстрая.. переиначить запрос чтобы без subselect не выйдет?


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Gold Dragon
Дата 24.4.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



так сразу и не отвечу.. я малость обмазгую сказонное.. А сам запрос перед вами, может кто что подскажет? Или может запрос разделить?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.