mysql eindeutiger Schlüssel und Index

8

in MySQL Wenn ich einen eindeutigen Schlüssel für zwei Spalten erstelle, sage

EINZIGARTIGER SCHLÜSSEL my_key ( column1 , column2 )

ist es notwendig, einen weiteren Schlüssel auf column1 zu erstellen? Mein Ziel ist es, column1 und column2 eindeutig zu machen, und ich werde viele selects tun, die von column1 kodiert werden.

    
Beier 10.03.2010, 21:14
quelle

3 Antworten

11

Nein, dies ist nicht notwendig, da ein Index für (Spalte1, Spalte2) anstelle eines Index für Spalte1 allein verwendet werden kann.

Vielleicht möchten Sie einen neuen Index nur für Spalte zwei erstellen, da der Index (Spalte1, Spalte2) nicht gut ist, wenn nur nach (Spalte2) gesucht wird.

    
Mark Byers 10.03.2010, 21:16
quelle
8

Nein, Ihr my_key -Index kümmert sich um alle Anfragen zu column1 oder den Bedingungen zu column1 AND column2 . Wenn Sie jedoch nur Abfragen für column2 durchführen, sollten Sie einen zusätzlichen Index für column2 hinzufügen, um eine effiziente Abfrage durchführen zu können.

Außerdem, wenn sowohl column1 als auch column2 eindeutig sind, sollten Sie in Betracht ziehen, etwas wie

zu verwenden %Vor%

Dies stellt sicher, dass sowohl column1 als auch column2 eindeutig sind, und jede Abfrage, die nur column1 und column2 auswählt, kann mit nur-Index-Zugriff abgerufen werden.

    
PatrikAkerstrand 10.03.2010 21:17
quelle
2

Ein UNIQUE-Index ist ein btree-index . Dieser Index ist sortiert, weshalb Sie für die erste Spalte keinen zweiten Index benötigen. Die Sortierreihenfolge der Kombination funktioniert auch nur für die erste Spalte, aber nicht nur für die zweite Spalte.

    
Frank Heikens 10.03.2010 21:40
quelle

Tags und Links