Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с оптимизацией запроса пожалуйста / 12 сообщений из 12, страница 1 из 1
12.05.2016, 16:31
    #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
12.05.2016, 16:37
    #39234473
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с оптимизацией запроса пожалуйста
Лебедкин,

А почему вы группируете по одному полю, а в SELECT-е другие поля? Вам все равно что там выведется?
...
Рейтинг: 0 / 0
12.05.2016, 16:48
    #39234487
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с оптимизацией запроса пожалуйста
но ведь sr.agent=sua.id
разве принципиально, какое из них выводить?
...
Рейтинг: 0 / 0
12.05.2016, 17:05
    #39234507
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с оптимизацией запроса пожалуйста
Для этого поля да. А для остальных?
...
Рейтинг: 0 / 0
12.05.2016, 17:24
    #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
12.05.2016, 17:26
    #39234543
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с оптимизацией запроса пожалуйста
Лебедкин,

Покажите план нового запроса.
...
Рейтинг: 0 / 0
12.05.2016, 17:30
    #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
12.05.2016, 17:33
    #39234554
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с оптимизацией запроса пожалуйста
Лебедкин,

А зачем в этом запросе таблица stat_user_agents? Только для того, чтобы проверить соответствие какой-нибудь записи в ней для текущего sr.agent ?
...
Рейтинг: 0 / 0
12.05.2016, 17:36
    #39234557
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с оптимизацией запроса пожалуйста
из нее поля некоторые справочные брались, я их убрал, кода упрощал
...
Рейтинг: 0 / 0
15.05.2016, 10:18
    #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
15.05.2016, 10:19
    #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
16.05.2016, 06:34
    #39236230
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с оптимизацией запроса пожалуйста
Лебедкинповыкидывал из него лишние джоины, чтобы лишняя информация не отвлекалаа за каким этим самым оставил таблицу stat_user_agents? без неё, если сделать индекс на агент+т, должно летать.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с оптимизацией запроса пожалуйста / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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