2016-09-23 2 views
0

Angenommen, ich habe eine Tabelle mit 10 Spalten (unabhängig von Datentypen), und ich muss in dieser Tabelle einfügen. Als Constraints müssen jedoch alle Zeilen unterschiedlich sein und 2 Zeilen sind nur dann gleich, wenn sie dieselben Werte in den gleichen Spalten haben (ungültige ID-Spalten).Kombinierte Index-Performance

Zum Beispiel

Equal: (0,1,2,3,4,5,6,7,8,9) und (0,1,2,3,4,5,6, 7,8,9)

Different: (0,1,2,3,4,5,6,7,8,9) und (0,1,2,0,4,5,6, 7,8,9)

Die einzige Lösung, die ich kenne, ist es, einen kombinierten Index mit allen Spalten zu erstellen, aber ich mache mir Sorgen um die Leistung (könnte mehr Spalten sein). Meine Frage ist, wie stark beeinflusst dieser Index die Leistung? Natürlich würde ich gerne andere Lösungen kennen, wenn es existiert.

+1

Versuchen Sie Ihre Methode. Wenn es zu langsam ist, können Sie danach fragen. –

+0

http://stackoverflow.com/questions/34029921/using-multi-column-unique-indexes-vs-single-hashed-column –

Antwort

0

Es hängt von Ihrem RDBMS usw. ab - aber nein, ein eindeutiger Index über mehrere Spalten sollte keine wesentlichen Leistungsprobleme haben. Es hilft, wenn Sie die "am weitesten links" -Spalten in Ihrem Index (d. H. Die ersten in Ihrer "create index" -Anweisung) die eindeutigsten sein können.

Wie der Link in diesem related question schlägt, besteht die Alternative darin, einen Hash der Spaltenwerte zu erstellen und einen eindeutigen Index für diese eine Hash-Spalte zu erstellen.

Ich würde eine Leistungstest-Suite schreiben, um zu entscheiden, ob die Lösung "eindeutiger Index über mehrere Spalten" schnell genug ist, weil alle Alternativen wahrscheinlich sehr viel Arbeit kosten und möglicherweise langsamer sind.