2013-05-18 27 views
1

请帮助优化Rails应用程序中的对象去销毁:我有相对较大的数据库,并且当我想从中删除用户时,所有依赖对象的移除需要> 1分钟。这很长。数据库具有字段索引,用于查找数据,不需要大于5分钟的索引。使用一个事务销毁Rails中的相关对象

我看到每个查询都需要一点时间:0.1 - 1ms。但有很多疑问。问题是:我如何告诉rails使用一个数据库事务删除所有相关的对象?我认为这应该会加快这个操作和其他一些操作。

感谢

+0

你能解释一下吗?当你说“大数据库”时,你指的是大数据吗?如果是这样的话,我非常怀疑,如果不将不同的任务委托给并行进程,那么你就能更快地获得它。 – trevorhinesley

+1

退房http://stackoverflow.com/questions/2797339/rails-dependent-destroy-vs-dependent-delete-all ---你可能会受益于移动到'dependent :: delete_all' –

回答

0

如果你想删除的对象和它所有的依赖关系,请使用破坏方法:

Post.last.destroy

如果你想快速摧毁所有Posts,使用destroy_all方法:

Post.destroy_all

+1

其实,我在做像users = User.where(:some => condition); users.destroy。这个.destroy方法用〜250个sql查询从数据库中删除> 150 000个对象。问题是如何加快查询,可能是交易或其他方式... – user1859243