为了保持表和索引的效率,建议不要直接运行“ OPTIMYZE TABLE”(如下面的链接所述),那么最佳实践是按照以下确切顺序进行吗?
我相信最后一步(分析表)对于更新information_schema.statistics表中的索引基数也很有用。
欢迎对此进行任何更正或提出建议!
谢谢
链接:https://www.percona.com/blog/2010/12/09/mysql-optimize-tables-innodb-stop/
示例:
alter table T1 DROP index i1 ;
alter table T1 DROP index i2 ;
optimize table T1 ;
alter table T1 ADD index i1(c1) ;
alter table T1 ADD unique index i2(c1, c2) ;
analyze table T1 ;
答案 0 :(得分:1)
您觉得有什么改善吗?我对此表示怀疑。在大多数情况下,InnoDB会保持“足够”清洁其BTree。在短时间内运行OPTIMIZE TABLE
只会带来很小的改善。
还有其他事情要看。例子:
index i1(c1)
是不必要的,因为您也有unique index i2(c1, c2)
。PRIMARY KEY(id)
,请考虑将该唯一索引升级到PRIMARY KEY(c1, c2)
。FOREIGN KEYs
每次插入都会花费一些钱;您真的需要它们吗?BIGINT
足够时,您是否盲目使用SMALLINT
?