powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите оптимизировать
3 сообщений из 3, страница 1 из 1
помогите оптимизировать
    #33013850
alw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
alw
Гость
mysql-3.23.58

Храню лог от squid'а в mysql вот в таком вот виде:

CREATE TABLE access_log (
date datetime NOT NULL,
duration int NOT NULL,
client_ip varchar(16) NOT NULL,
user varchar(32) NOT NULL,
request varchar(16) NOT NULL,
result int NOT NULL,
size int NOT NULL,
url text NOT NULL,
http_type varchar(35) NULL
);
ALTER TABLE access_log ADD INDEX (date);
ALTER TABLE access_log ADD INDEX (user);

DROP TABLE IF EXISTS users;
CREATE TABLE users (
id int NOT NULL auto_increment,
user varchar(32) NOT NULL,
username varchar(255) NOT NULL DEFAULT '',
limit_month bigint unsigned NOT NULL DEFAULT 0,
traffic_month bigint unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
ALTER TABLE users ADD INDEX (user);

выборка суммарной статистики за произвольный период времени осуществляется таким вот запросом:

SELECT u.id,username,u.user,limit_month,SUM(size) AS traffic_month
FROM access_log a,users u WHERE u.user=a.user
AND date => '2005-04-01' AND date =< '2005-04-13'
GROUP BY u.id,username,u.user,limit_month
ORDER BY traffic_month DESC

все работает, но данный запрос очень сильно тормозит. как бы его ускорить?

wbr, alw
...
Рейтинг: 0 / 0
помогите оптимизировать
    #33014226
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартный способ - создать необходимые индексы. В данном случае:
на (u.id,username,u.user,limit_month)
на (traffic_month)

И ещё. Связка таблиц сделана абсолютно неверно. Надо связывать по users.id и access_log.user, причем access_log.user должно быть целочисленным и "ссылочным".
...
Рейтинг: 0 / 0
помогите оптимизировать
    #33014820
alw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
alw
Гость
Johnmen
И ещё. Связка таблиц сделана абсолютно неверно. Надо связывать по users.id и access_log.user, причем access_log.user должно быть целочисленным и "ссылочным".

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


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