Ich habe eine Tabelle und versuche, einen eindeutigen Index für zwei Spalten hinzuzufügen. Diese Spalten werden ebenfalls indiziert. Meine Frage ist also, ob ich nur die Indizes entfernen kann, die nur für eine Spalte waren, oder ob ich alle drei Indizes verwenden muss:
add_index "subscriptions", ["user_id"]
add_index "subscriptions", ["content_id"]
add_index "subscriptions", ["user_id"], ["content_id"], :unique => true
ruby-on-rails
activerecord
Markus
quelle
quelle
used_id
undcontent_id
in separaten Indizes zu haben, wenn Sie auch einen eindeutigen Index für beide Spalten haben. Dies gilt wahrscheinlich auch für andere DBs ... Entgegen Ihren Erwartungen wirkt sich dies negativ auf die Leistung aus (insbesondere Einfügungen / Aktualisierungen).Antworten:
quelle
%w(user_id content_id)
in Ruby erstellt nur eine Reihe von Zeichenfolgen, es ist nichts Besonderes für Schienen. Sie können dasselbe tun, mit"user_id content_id".split
dem noch ein Array von Zeichenfolgen erstellt wird. Ich bin sicher, dass Sie das wissen, dieser Kommentar ist nur, damit andere Leser dies nicht falsch auf Schienen beziehen :)%w(user_id content_id)
ist ein Array von Strings. Welches ist das gleiche wie['user_id', 'content_id']
. Die andere Notation für Array of Symbols ist%i(user_id content_id)
, oder wie das OP es schrieb[:user_id, :content_id]