Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich einen „zweiseitigen“ eindeutigen Index für zwei Felder?

Wie wäre es, wenn Sie steuern, was in die Tabelle kommt, sodass Sie immer die kleinste Zahl in der ersten Spalte und die größte in der zweiten speichern? Solange es natürlich dasselbe "bedeutet". Es ist wahrscheinlich kostengünstiger, dies zu tun, bevor es überhaupt in die Datenbank gelangt.

Wenn dies nicht möglich ist, könnten Sie die Felder so speichern, wie sie sind, aber sie in numerischer Reihenfolge in zwei OTHER-Felder duplizieren, auf denen Sie den Primärschlüssel (Pseudo-Code-ish) erstellen würden:

COLUMN A : 2
COLUMN B : 1

COLUMN A_PK : 1  ( if new.a < new.b then new.a else new.b )
COLUMN B_PK : 2  ( if new.b > new.a then new.b else new.a )

Dies könnte leicht mit einem Auslöser (wie in Ronalds Antwort) oder weiter oben in der Anwendung erfolgen.