Tim*_*thy 4 mysql indexing performance
我有一个mysql数据库,其中包含一个超过600万行且没有索引的特定表.诸如此类的简单查询SELECT ... FROM log ORDER BY log_date ASC将花费不可接受的时间.我显然需要在表中添加索引,但我不确定最有效的方法.
1)我的第一个选择是发布ALTER TABLE log ADD INDEX log_date,但我不确定需要多长时间...它会花费与前一个查询大致相同的时间长度吗?如果是这样,这是不可接受的.
2)我的第二个选择是导出表,TRUNCATE表,发出ALTER TABLE语句,然后重新导入表数据.我不确定重新导入数据需要多长时间,并且担心如果系统在此过程中尝试将行写入表中会发生什么.
是否有人能够深入了解在生产系统中索引中等大小的表而不会造成太多悲伤的最佳方法?
我们的实验表明,在性能方面最好的答案是1 - 创建一个新的空表并将索引添加到该表中,然后将原始表复制到其中.然后将旧表重命名为新名称,为新表指定正确的名称,最后删除旧表.