sql >> データベース >  >> RDS >> Mysql

ActiveRecord destroy_allに時間がかかるのはなぜですか?

    これを深く掘り下げてみると、commentsからの削除のようです。 非常に時間がかかる配列。削除されたレコードは、アレイから削除されますここ

    大きな配列でこれをシミュレートすると、同じ遅い動作が得られます:

    1.9.3-p194 :001 > require 'benchmark'; require 'ostruct'
     => true 
    1.9.3-p194 :002 > i = 0; a = []
     => [] 
    1.9.3-p194 :003 > 35_000.times { i+=1; a << OpenStruct.new(value: i) }
     => 35000 
    1.9.3-p194 :004 > puts Benchmark.measure { a.each { |i| a.delete(i) } }
    623.560000   0.820000 624.380000 (625.244664)
    

    ActiveRecordは、おそらくArray#clearを実行するように最適化できます。 destroy_allの場合 ...



    1. 2038-01-19以降のMySQLfrom_unixtime?

    2. SQLの複数のテーブルまたは1つのメガテーブル?

    3. SQL-IF EXISTS UPDATEELSEINSERT構文エラー

    4. ClusterControlを使用してMySQLバックアップを検証する方法