powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с оптимизацией запроса пожалуйста
12 сообщений из 12, страница 1 из 1
помогите с оптимизацией запроса пожалуйста
    #39234470
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос такой:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select sua.id, loc_h.id loc_host_id, loc_h.host_name loc_host, sua.user_agent, inet_ntoa(sua.last_ip) ip, sua.confirm, 
min(sr.t) _min, max(sr.t) _max, count(sr.agent) count, ref_p.uri referer, ref_h.host_name, ref_p.id idsp
   	from stat_requests sr
   	join stat_user_agents sua on sr.agent=sua.id  
   	left join stat_pages ref_p on ref_p.id=sua.referer
   	left join stat_hosts ref_h on ref_p.host=ref_h.id	
   	join stat_pages loc_p on loc_p.id=sr.page
   	join stat_hosts loc_h on loc_p.host=loc_h.id
   	group by sr.agent
   	order by _max desc limit 100
 


выполняется это около 2х минут.

сделал explain, получил вот что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
id select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra 	
1 	SIMPLE 	sua 	ALL 	PRIMARY 	NULL	NULL	NULL	240590 	Using temporary; Using filesort
1 	SIMPLE 	ref_p 	eq_ref 	PRIMARY 	PRIMARY 	4 	stat.sua.referer 	1 	
1 	SIMPLE 	ref_h 	eq_ref 	PRIMARY 	PRIMARY 	4 	stat.ref_p.host 	1 	
1 	SIMPLE 	sr 	ref 	agent 	agent 	4 	stat.sua.id 	8 	
1 	SIMPLE 	loc_p 	eq_ref 	PRIMARY,urii,host 	PRIMARY 	4 	stat.sr.page 	1 	Using where
1 	SIMPLE 	loc_h 	eq_ref 	PRIMARY 	PRIMARY 	4 	stat.loc_p.host 	1 	

Вижу, что целиком сканируется таблица stat_user_agents, все 240 тысячи записей. Только не пойму зачем он это делает, ведь есть же возможность связать эту таблицу по индексу с stat_requests. И как его отучить от такого поведения?
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234473
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин,

А почему вы группируете по одному полю, а в SELECT-е другие поля? Вам все равно что там выведется?
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234487
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но ведь sr.agent=sua.id
разве принципиально, какое из них выводить?
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234507
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для этого поля да. А для остальных?
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234536
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я сейчас упростил запрос, повыкидывал из него лишние джоины, чтобы лишняя информация не отвлекала. в выводимых полях оставил только поле групировки и агрегаты. вот:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT sr.agent, min( sr.t ) _min, max( sr.t ) _max, count( sr.agent ) _count
FROM stat_requests sr
JOIN stat_user_agents sua ON sr.agent = sua.id
GROUP BY sr.agent
ORDER BY _max DESC
LIMIT 100 



работать слал несколько быстрей, но все равно тормозит
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234543
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин,

Покажите план нового запроса.
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234550
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra 	
1 	SIMPLE 	sr 	ALL 	agent 	NULL	NULL	NULL	1874360 	Using temporary; Using filesort
1 	SIMPLE 	sua 	eq_ref 	PRIMARY 	PRIMARY 	4 	stat.sr.agent 	1 	Using index
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234554
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин,

А зачем в этом запросе таблица stat_user_agents? Только для того, чтобы проверить соответствие какой-нибудь записи в ней для текущего sr.agent ?
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39234557
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из нее поля некоторые справочные брались, я их убрал, кода упрощал
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39235924
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкиня сейчас упростил запрос, повыкидывал из него лишние джоины, чтобы лишняя информация не отвлекала. в выводимых полях оставил только поле групировки и агрегаты. вот:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT sr.agent, min( sr.t ) _min, max( sr.t ) _max, count( sr.agent ) _count
FROM stat_requests sr
JOIN stat_user_agents sua ON sr.agent = sua.id
GROUP BY sr.agent
ORDER BY _max DESC
LIMIT 100 



работать слал несколько быстрей, но все равно тормозит

как бык зашла без where сложно оптимизировать вообще.
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39235925
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛебедкиня сейчас упростил запрос, повыкидывал из него лишние джоины, чтобы лишняя информация не отвлекала. в выводимых полях оставил только поле групировки и агрегаты. вот:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT sr.agent, min( sr.t ) _min, max( sr.t ) _max, count( sr.agent ) _count
FROM stat_requests sr
JOIN stat_user_agents sua ON sr.agent = sua.id
GROUP BY sr.agent
ORDER BY _max DESC
LIMIT 100 



работать слал несколько быстрей, но все равно тормозит

как бы запрос без where сложно оптимизировать вообще.
...
Рейтинг: 0 / 0
помогите с оптимизацией запроса пожалуйста
    #39236230
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкинповыкидывал из него лишние джоины, чтобы лишняя информация не отвлекалаа за каким этим самым оставил таблицу stat_user_agents? без неё, если сделать индекс на агент+т, должно летать.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с оптимизацией запроса пожалуйста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]