powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация запроса
5 сообщений из 5, страница 1 из 1
Оптимизация запроса
    #33450890
lizendir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE report_exit_points
(
	id_site MEDIUMINT NOT NULL DEFAULT  0 ,
	hour INTEGER NOT NULL DEFAULT  0 ,
	url TEXT NOT NULL DEFAULT '',
	number MEDIUMINT NOT NULL DEFAULT  0 ,
	INDEX idx (id_site,hour)
) Type=MyISAM
;
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE report_month_exit_points
(
	id_site MEDIUMINT NOT NULL DEFAULT  0 ,
	day INTEGER NOT NULL DEFAULT  0 ,
	url TEXT NOT NULL DEFAULT '',
	number MEDIUMINT NOT NULL DEFAULT  0 ,
	INDEX idx (id_site,day),
) Type=MyISAM
;
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT
		SUM(number) as number,url
	FROM (
		SELECT number,url
		FROM report_exit_points
		WHERE id_site= 444  AND hour BETWEEN  1133395200  AND  1135295999 
		UNION ALL
			SELECT number,url
			FROM report_month_exit_points
			WHERE id_site= 444  AND day BETWEEN  1133395200  AND  1135295999 
	) AS t
	GROUP BY url
	ORDER BY number DESC,url ASC
	LIMIT  10 , 10 	

Собственно вопрос, правильно ли я поставил индексы и можно ли как-то оптимизировать запрос? К этим таблицам осуществялецца много подобных запросов и все они содержат
Код: plaintext
1.
WHERE id_site= 444  AND day BETWEEN  1133395200  AND  1135295999 
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33452429
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индексы правильно, но лучше покажи explain запроса :)
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33453464
lizendir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А explain ничего не показывает :-(
Код: plaintext
1.
2.
3.
4.
5.
6.
C:\work\web\counter\tmp>mysql < sql
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    25390   Using temporary; Using filesort
2       DERIVED report_exit_points      range   idx     idx     7       NULL    24798   Using where
3       UNION   report_month_exit_points        range   idx     idx     7       NULL    1566    Using where
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    NULL
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33453467
lizendir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон за слова "А explain ничего не показывает :-(" Я их написал в самом начале, у меня просто веб-морда криво explain выводила, а потом когда разобрался, забыл стереть %-)
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33453855
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял derived2 в плане - это внешний датасет после объединения - его не получится ускорить, потому что в результирующем запросе на лету индекс не поставить :(

Для теста я бы разделил запрос на 2 штуки - в 1-м формировать временную таблицу, цеплять туда индексу по группировочным полям и извлекать результаты. И какое время каждое действие занимает.
На практике может оказаться так значительно быстрее, а может и нет сильно :)

Если не подсказал решение, то пытался :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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