2010-11-08 19 views
56

Tablo var ve iki sütuna benzersiz bir dizin eklemeye çalışıyorum. Bu sütunlar da endeksli. Bir yan not olarak sizin açıklama Markus'uİki sütunda benzersiz bir dizin nasıl uygulanır

+5

add_index "subscriptions", ["user_id"] add_index "subscriptions", ["content_id"] add_index "subscriptions", ["user_id"], ["content_id"], :unique => true 

Teşekkür: Bunu tüm threedizinleri kullanmak zorunda sadece bir sütun için veya eğer vardı endeksler kaldırabilirsiniz Yani benim sorum : Eğer MySQL kullanıyorsanız, her iki sütunun da benzersiz bir dizinine sahipseniz, "index_id" ve "content_id" öğelerinizin ayrı indekslere sahip olmasının bir anlamı yoktur. Bu muhtemelen diğer DB'ler için de geçerlidir ... Beklediğiniz şeylerin aksine, performans üzerinde olumsuz bir etkisi olacaktır (özellikle ekleme/güncelleme). – hurikhan77

cevap

126
add_index :subscriptions, [:user_id, :content_id], unique: true 
+6

ayrı sözdizimi de vardır: add_index: abone, [: user_id: CONTENT_ID]: benzersiz => doğru add_index: abonelikleri, (user_id CONTENT_ID w)%: benzersiz => doğru Bunlar konum Aynı şey, sadece sütunları belirtmek için farklı sözdizimi. –

+12

@ FrançoisBeausoleil '% w (user_id content_id)' yakutta sadece bir dizi dizgi oluşturur, raylara özel değildir. Aynı şeyi hala bir dizi dizgi yaratan "user_id content_id" .split ile de yapabilirsiniz. Bunu bildiğinizden eminim, bu yorum sadece diğer okuyucuların bunu raylara yanlış bir şekilde bağlayamadığı :) –

İlgili konular