我使用一个包含大约2 Mio小记录和超过15个索引的集合。有时候我不得不喋喋不休。我认为最快的方法就是简单地截断它。但这需要几个小时。 当我手动删除之前的所有索引时,只需几秒钟。但是每次我都必须重新创建索引。
截断有/无索引的区别是什么?这是必要的,就我而言,截断意味着:"扔掉所有东西(也就是完整的索引)"?
答案 0 :(得分:3)
truncate
命令本身就是一个事务操作。
如果它在中间某处失败,它可以恢复和恢复已经删除的文档。因此,它与循环遍历集合中的所有文档并逐个删除它们大致相同。
有一个快捷版truncate
可能是有意义的,它只删除集合中的所有数据而没有任何机会恢复文档。当然,这样的truncate
不能成为另一个交易的一部分。但如果选择留给用户,我认为这是可以的。