AndrewE писал(а):Magnum72 писал(а):
Чего вы херней страдаете
бегин
ренаме discount_transactions_all в discount_transactions_all_хххх
смотрим автоинкремент ид у discount_transactions_all_хххх
креате табле discount_transactions_all с автоинкремент из discount_transactions_all_хххх
далее спокойно переносим маленький кусочек данных из discount_transactions_all_хххх в discount_transactions_all
тоже самое с discount_transactions_iptraffic_all
коммит
ЗЫ естесно данная операция должна быть строго ежемесячной
Пожалуйста по пунктам.
Как смотрим автоникремент?
Говорят, что как-то так:
Код: Выделить всё
SELECT Auto_increment FROM information_schema.tables WHERE table_name='discount_transactions_iptraffic_all';
Дальше как его устанавливаем для новой таблицы?
Наверное, как-то так:
CREATE TABLE `discount_transactions_iptraffic_all` (
`id` int(11) NOT NULL default '0',
`account_id` int(11) default NULL,
`discount` double default NULL,
`discount_with_tax` double default NULL,
`service_id` int(11) default NULL,
`discount_period_id` int(11) default NULL,
`slink_id` int(11) default NULL,
`discount_date` int(11) default NULL,
`discount_date_hour` int(11) default NULL,
`discount_date_day` int(11) default NULL,
`discount_date_month` int(11) default NULL,
`t_class` int(11) default '0',
`base_cost` double default '0',
`ipid` int(11) default '0',
`bytes` bigint(20) default NULL,
`is_canceled` int(11) default '0',
`cancel_id` int(11) default '0',
KEY `first_dtr` (`discount_date`,`account_id`,`slink_id`),
KEY `my_dtr` (`discount_date`,`account_id`)
) ENGINE=MyISAM AUTO_INCREMENT=60726987 DEFAULT CHARSET=utf8
Ну и вопрос века:
"далее спокойно переносим маленький кусочек данных из"
что именно переносим?
С этим вопросом есть такая неувязка... Вообще есть запрос вида insert ... select ...
Он позволяет перетаскивать из таблицы в таблицу данные. У меня не опыта в выкручивании яиц таблицам с автоинкрементом и тестить лень. По идее - именно тот запрос который надо задать mysql-серверу.
В select в качестве критерия отбора надо задать время больше даты отсечения. То есть, если дата отсечения 1 дек 2008г 0:00:00, то соотв все записи, у которых discount_date > unix_timestamp('2008-12-01 00:00:00') надо переносить в свежесозданную таблицу.
PS: гуру от мускуля, поправьте, ежели что не так.