group big table

2 отговора 102 прегледа
#1

group big table

Имам доста голяма таблица - няколко милиона записа
Тя има следната структира:

CREATE TABLE traffic (
id int(11) unsigned NOT NULL auto_increment,
IP varchar(15) NOT NULL default '',
time datetime NOT NULL default '0000-00-00 00:00:00',
input int(20) unsigned NOT NULL default '0',
output int(20) unsigned NOT NULL default '0',
PRIMARY KEY (id),
KEY IP (IP),
KEY time (time)
) TYPE=MyISAM;

В нея на всеки 5 мин се добавя нова информация.

Та ето и какво искам да попитам.

Как най-лесно и бързо да направя така че в таблицата да останат по един ред за всяко IP за всеки ден, като input и output да са сумите за този период.
Другите записи да изчезнат.

Имам MySQL-3.23.53

Отговор
в отговор на beginer #2

Re: group big table

По добре си направи втора таблица със почти същата структура -
вместо

time DATETIME
слагаш
day DATE

Предполагам, че нататък идеята ти е ясна.



Иначе можеш да го направиш с:
CREATE TEMPORARY TABLE temp SELECT ... WHERE ... GROUP BY ,,,
DELETE ... WHERE <същото като по горе>
INSERT INTO traffic SELECT * FROM temp;


С втора таблица спестяваш едната заявка
INSERT INTO day_traffic SELECT ...
DELETE FROM traffic

salle.online.bg/sig
Отговор
в отговор на salle #3

Re: group big table

Мерси много !!!

Отговор