2013-05-18 59 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