从CSV或EXCEL文件导入时暂停MySQL索引

时间:2013-09-27 19:40:08

标签: mysql ruby-on-rails indexing

如何在将数据导入数据库时​​停止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建立索引吗?导入后我将启用索引。有没有一种首选的方法呢?

谢谢,丹尼尔

1 个答案:

答案 0 :(得分:0)

实际上,您可以同时执行这两项任务。 你听说过sidekiq吗?它在后台运行您想要的过程。所以mysql索引在后台。您必须为索引创建一个流程工作者,因此它不会中断您的文件导入。

https://github.com/mperham/sidekiq

只需完成他们的基础知识,你就会得到它的要点。