group big table
2 отговора
102 прегледа
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
Тя има следната структира:
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
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
вместо
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