/ / Comment add_index dans Rails fonctionne-t-il avec «unique: true» pour 2 paramètres? - ruby-on-rails, base de données, migration

Comment add_index dans Rails fonctionne-t-il avec «unique: true» pour 2 paramètres? - ruby-on-rails, base de données, migration

Comment le vrai unique est-il appliqué à 2 ID?

add_index :table_name, [:some_id, :another_id], unique: true, algorithm: :concurrently

Réponses:

0 pour la réponse № 1

Cela signifie dans votre table_name, il n'y a qu'une seule ligne avec une valeur unique de some_id et another_id avec ordre d'index, exemple:

id, some_id, another_id
1, 11, 22
2, 11, 33
3, 22, 11

alors la base de données ne vous permettra pas d'insérer une nouvelle ligne avec some_id = 11 et another_id = 22

L'ordre de [:some_id, :another_id] est important car la base de données décidera d'utiliser l'index en fonction de cet ordre, par exemple:

Ces requêtes utiliseront index:

select * from table_name where some_id = "11"
select * from table_name where some_id = "11" AND another_id = "22"

Cette requête n'utilisera pas l'index:

select * from table_name where another_id = "22"