我有一个大约15Gb的MyIsam表。
我删除了大约一半的行,删除查询大约需要10个小时。
现在我害怕开始optimize table
,因为我不知道要花多长时间。
如果您有这么大的桌子的经验,请与我分享。
PS删除过程后,查询“select * from table limit 0,30”需要数年时间。
optimize table
会帮忙吗?
需要超过10个小时吗?
如果我中断“优化表”查询,会发生什么?
答案 0 :(得分:4)
优化表将有助于减小大小(索引将被重新计算等) 如果删除了一半的行,则应优先选择表格。在我的公司,我们有大约2-3 GB的表。 Optmize并不像删除那么多。
如果您希望查询更快,请优化您的表格。
从大表中删除许多行的另一个提示:
您可以不使用任何删除命令来执行此操作。
选择不要删除的行到与原始表格具有相同结构的空表中:
INSERT INTO t_copy SELECT * FROM t WHERE ...;
使用RENAME TABLE以原子方式移动原始表格并将副本重命名为原始名称:
RENAME TABLE t TO t_old,t_copy TO t;
删除原始表格:
DROP TABLE t_old;