当我们对于一个数据量非常大的表进行大量的删除操作后,这个表将会存在非常多的碎片,导致数据库服务器性能下降,这个时候就要求我们对这些表要定期的进行碎片整理以保证数据库的性能。其中一个命令可以帮助我们完成这个——OPTIMIZETABLE [tablename],当然这种方式只适用于多表空间的存储方式。这里以InnoDB的多表空间存储为例(最后附上修改数据库表存储方式的方法)。
1. 首先创建表
SETFOREIGN_KEY_CHECKS=0;--(不检查外键关联)
DROP TABLE IF EXISTS `department_info`;
CREATETABLE `department_info` (
`departmentid`int(11) NOT NULL,
`departmentname` varchar(30) NOT NULL,
`departmentdesc`text
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 向表中插入大量数据
insertinto department_info values(1,'test',repeat('haha',100));
insertinto department_info values(2,'test',repeat('haha1',100));
insertinto department_info values(3,'test',repeat('haha1',100));
insertinto department_info select * from department_info;
insertinto d