НЕ ПРОВЕРЯЛОСЬ! .
К примеру чистим таблицу account от аккаунтов несипользуемых доолгое время.
Код:
select * from `account` where `last_login`< '2006-09-01 00:00:00';смотрим что выводит, и действуем.
Код:
delete from `account` where `last_login`< '2006-09-01 00:00:00';или же забаненные аккаунты
Код:
select * from `account` where `banned`> '0';Теперь надо удалять все записи с несуществующим ID аккаунта из таблицы realmcharacter.
Что-то вроде такого:
Код:
delete from `realmcharacters` WHERE `realmcharacters`.`acctid` NOT IN ( select `id` from `account`);База Realmd Очищена! Теперь чистим mangosd.
Код:
delete from `character` WHERE `character`.`account` NOT IN ( select `id` from `realmd`.`account`);На основании этого теперь можем чистить все таблицы персонажей.
Код:
delete from `character_action` WHERE `character_action`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_aura` WHERE `character_aura`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_homebind` WHERE `character_homebind`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_inventory` WHERE `character_inventory`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_kill` WHERE `character_kill`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_pet` WHERE `character_pet`.`owner` NOT IN ( select `guid` from `character`);
delete from `character_queststatus` WHERE `character_queststatus`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_reputation` WHERE `character_reputation`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_social` WHERE `character_social`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_spell` WHERE `character_spell`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_stable` WHERE `character_stable`.`owner` NOT IN ( select `guid` from `character`);
delete from `character_ticket` WHERE `character_ticket`.`guid` NOT IN ( select `guid` from `character`);
delete from `character_tutorial` WHERE `character_tutorial`.`guid` NOT IN ( select `guid` from `character`);Персонаж удалён, чистим его остатки:
Код:
delete from `mail` WHERE `mail`.`receiver` NOT IN ( select `guid` from `character`);
Помоему всё? Ищите ошибки, писал только со структуры, без реально заполненой базы...Так что они должны и могут быть. Особенно рекомендую посомтреть таблицы с петами, трупами, и почтой.
Гильдии не брал в расчёт, так как они не работают ещё