Akan lebih baik, karena mempercepat pencarian dalam pengurutan di kolom ini. Dan kunci Asing adalah sesuatu yang banyak dicari.
Karena Rails Versi 5, indeks akan dibuat secara otomatis, untuk informasi lebih lanjut lihat di sini .
Tidak, ini sudah dilakukan dengan rel
Tidak, sama seperti di atas
Maka indeks adalah indeks gabungan dari dua kolom. Itu tidak masuk akal, kecuali jika Anda ingin semua entri untuk satu category_id
DAN satu state_id
(Seharusnya category_id
bukan category
) secara bersamaan.
Indeks seperti ini akan mempercepat permintaan berikut:
# rails 2
User.find(:all, :conditions => { :state_id => some_id, :category_id => some_other_id })
# rails 3
User.where(:state_id => some_id, :category_id => some_other_id)
Dimana
add_index :users, :category_id
add_index :users, :state_id
akan mempercepat permintaan ini:
# rails 2+3
User.find_by_category_id(some_id)
User.find_by_state_id(some_other_id)
# or
# rails 2
User.find(:all, :conditions => {:category_id => some_id})
User.find(:all, :conditions => {:state_id => some_other_id})
# rails 3
User.where(:category_id => some_id)
User.where(:state_id => some_other_id)
Tidak, karena jika Anda melakukan ini, hanya satu pengguna yang dapat berada dalam satu kategori, tetapi arti dari kategori adalah Anda dapat menempatkan lebih banyak banyak pengguna ke dalam satu kategori. Di User
. Anda model Anda memiliki sesuatu seperti ini belongs_to :category
dan dalam model Kategori Anda sesuatu seperti has_many :users
. Jika Anda memiliki has_many
hubungan foreign_key
kolom tidak boleh unik!
Untuk informasi lebih detail tentang ini, Anda harus melihat tadman bagus jawab .