innodb优化数据表
执行数据表优化提示:
optimize table t
'Table does not support optimize, doing recreate + analyze instead'
经查询(http://www.2cto.com/database/201212/176515.html)
要使用:
alter table db.table_name engine=innodb
这种形式才可以优化数据表。不过文章也指出这样做虽然安全,但也要做好备份。
PS:由于一些表经常添加删除,容易形成“空洞”,影响查询时间,优化一下数据表,可以减少磁盘占用并且可以提高查询时间。
其间有个小插曲,就是mysql5.7默认使用严格模式(strict sql mode),在严格模式中NO_ZERO_IN_DATE,NO_ZERO_DATE是默认值,这两个默认值用于确定date和datetime中不允许0值存在。也就是日期范围是1000-01-01到9999-12-31,不能出现0000-00-00。这两个值存在sql_mode
变量中。如果在严格模式中把这两个值删除,会有一个警告出现。