この方法で作成されたテーブルの主キーとして UUID を使用しています。
移行:
class CreateAccounts < ActiveRecord::Migration
def change
create_table :accounts, :id => false do |t|
t.uuid :uuid, :null => false
t.timestamps
end
execute "ALTER TABLE accounts ADD PRIMARY KEY (uuid);"
add_index :accounts, :uuid, :unique => true
end
end
モデル:
class Account < ActiveRecord::Base
primary_key = :uuid
base.default_value_for(:uuid, :allows_nil => false) { UUIDTools::UUID.random_create.to_s }
end
しかし、主キーの UUID 列に二重のインデックスがあることがわかりました。
(1)ADD PRIMARY KEY
これは「XXX_pkey」インデックスを作成するものから来ていると思いますがadd_index :accounts, :uuid, :unique => true
、この移行と実行中のデータベースから安全に削除できますか?
(2)手動で追加されたインデックスのみが使用され、自動的に追加されたインデックスは使用されていないことがわかります。これはランダムですか?
(3)これらのインデックスのどれを削除する必要があり、Rails の移行を通じて本番環境でそれを行う最善の方法は何ですか?