Tengo una tabla y estoy tratando de agregar un índice único en dos columnas. Estas columnas también están indexadas. Entonces, mi pregunta es si puedo eliminar los índices que eran solo para una columna o si tengo que usar los tres índices:
add_index "subscriptions", ["user_id"]
add_index "subscriptions", ["content_id"]
add_index "subscriptions", ["user_id"], ["content_id"], :unique => true
ruby-on-rails
activerecord
Markus
fuente
fuente
used_id
ycontent_id
en índices separados si también tiene un índice único de ambas columnas. Esto probablemente también se aplica a otras bases de datos ... Al contrario de lo que espera, tendrá un impacto negativo en el rendimiento (especialmente inserciones / actualizaciones).Respuestas:
fuente
%w(user_id content_id)
en ruby solo crea una matriz de cadenas, no es especial para los rieles. Puede hacer lo mismo con el"user_id content_id".split
que todavía está creando una matriz de cadenas. Estoy seguro de que lo sabes, este comentario es solo para que otros lectores no relacionen esto con los rieles incorrectamente :)%w(user_id content_id)
es un Array of Strings. Que es lo mismo que['user_id', 'content_id']
. La notación diferente para Array of Symbols es%i(user_id content_id)
, o como lo escribió el OP[:user_id, :content_id]