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 回答