0

データベースにデータをインポートしているときに mysql のインデックス作成を停止するにはどうすればよいですか。ユーザーがファイルからデータをインポートできるRailsアプリケーションがあります。電話番号と電子メール アドレスの検索結果をより速く取得するために、いくつかのインデックスを追加します。

私の連絡先モデルには、他のモデルとの関係がいくつかありますが、簡単な例としてそれらを取り除きます。

  create_table "contacts", :force => true do |t|
    t.integer  "user_id"
    t.integer  "status"
    t.integer  "gender",                :default => 0,     :null => false
    t.string   "salutation",                               :null => false
    t.string   "title"
    t.string   "first_name",                               :null => false
    t.string   "last_name",                                :null => false
    t.binary   "phone"
    t.binary   "email"
    t.datetime "created_at",                               :null => false
    t.datetime "updated_at",                               :null => false
    :
    :
  end

  add_index "contacts", ["phone"], :name => "index_contacts_on_phone"
  add_index "contacts", ["email"], :name => "index_contacts_on_email"

インポートには時間がかかります。何千もの連絡先をインポートする際に、MySQL がインデックスを構築するのを防ぐことはできますか? インポート後、インデックスを有効にします。これを行うための好ましい方法はありますか?

ありがとう、ダニエル

4

1 に答える 1

0

実際には、両方のタスクを同時に実行できます。sidekiqについて聞いたことがありますか?バックグラウンドで必要なプロセスを実行します。したがって、mysql のインデックス作成はバックグラウンドで行われます。ファイルのインポートが中断されないように、インデックス作成用のプロセス ワーカーを作成する必要があります。

https://github.com/mperham/sidekiq

それらの基本を確認するだけで、その要点を理解できます。

于 2013-09-27T20:02:53.557 に答える