Доброго времнеи суток
Есть около десятка таблиц разных по структуре в которых по паре миллиардов сторк, соответственно они еле варочаються у них етсь общее поле datetime по которому можно разнести один день одна таблица(день 9-12 млн записей). данные хранятся не более 4 месяцев
я создал хранимую процедуру:
DELIMITER $$
DROP PROCEDURE IF EXISTS `wm_history`.`createTb` $$
CREATE PROCEDURE `wm_history`.`createTb` (
IN tbName VARCHAR(255),
IN dbFromName VARCHAR(255),
IN tbDate DATETIME
)
BEGIN
set @tbCreate = concat('drop table if exists `',tbName,'_',MONTH(tbDate)*100+DAY(tbDate),';');
PREPARE tCreate FROM @tbCreate;
EXECUTE tCreate;
DEALLOCATE PREPARE tCreate;
set @tbCreate = concat('create table `',tbName,'_',MONTH(tbDate)*100+DAY(tbDate),'` like `',tbName,'`;');
PREPARE tCreate FROM @tbCreate;
EXECUTE tCreate;
DEALLOCATE PREPARE tCreate;
set @tbInsert = concat('insert into `',tbName,'_',MONTH(tbDate)*100+DAY(tbDate),'` select * from `',
dbFromName,'`.`',tbName,'` where day(dt)=',day(tbDate),' and month(dt)=',month(tbDate),';');
PREPARE tInsert FROM @tbInsert;
EXECUTE tInsert;
DEALLOCATE PREPARE tInsert;
set @tbCount = concat('select count(id) from `',tbName,'_',MONTH(tbDate)*100+DAY(tbDate),';');
PREPARE tCount FROM @tbCount;
EXECUTE tCount;
DEALLOCATE PREPARE tCount;
END $$
DELIMITER ;
В неё передаёться имя таблицы и день, каждый день я задалбусь руцями перенасить можно ли это как то автоматизировать?
Отредактированно retro-kharkov (25.05.2011 11:57:41)