web-dev-qa-db-de.com

Hat der Varchar-Index einen Leistungsunterschied?

Erhöht der Index für eine varchar-Spalte die Abfrage langsamer? und ich muss den Vergleich von LIKE% nicht durchführen. 

36
Murvinlai

Erhöht der Index für eine varchar-Spalte die Abfrage langsamer?

Nein, tut es nicht.
Wenn das Optimierungsprogramm sich für die Verwendung des Index entscheidet, wird die Abfrage schneller ausgeführt. INSERTs/UPDATEs/DELETEs in dieser Tabelle wird langsamer sein, aber wahrscheinlich nicht bemerken.

Ich muss den Vergleich von LIKE% nicht durchführen

Beachten Sie, dass Sie Folgendes verwenden:

LIKE '%whatever%'

... wird not einen Index verwenden, jedoch Folgendes:

LIKE 'whatever%'

Der Schlüssel ist ein Platzhalterzeichen auf der linken Seite der Zeichenfolge. Dies bedeutet, dass ein Index für die Spalte nicht verwendet werden kann.

Beachten Sie außerdem, dass MySQL den für Indizes reservierten Speicherplatz begrenzt - sie können für MyISAM-Tabellen (767 Byte für InnoDB) bis zu 1000 Byte lang sein. 

80
OMG Ponies

Wenn Sie Ihre Varchar-Spalte durch eine Ganzzahl ersetzen können (was ich denke, ist das, worauf Sie hinweisen)? Ein Index, der die Ganzzahl-Spalte enthält, wird aus einigen Gründen eine bessere Leistung erbringen als die Varchar-Spalte. 

  1. Die Indexgröße ist kleiner und erfordert weniger Paging.
  2. Der Vergleich von Ganzzahlen ist weitaus besser als Varchar.
10
Leigh S

Indizierung macht Abfragen nicht langsamer, Datenbankgröße wird immer größer. Machen Sie also weiter und probieren Sie es aus.

Sie sollten in der Lage sein, beim Abrufen von Zeilen eine bessere Leistung zu erzielen, dies hängt jedoch von Ihren Daten und Ihren Abfragen ab.

6
YOU

Sie werden Ihre Abfragen nicht durch Indizierung langsamer machen. Wenn Sie die Spalte zu einem Typ int machen können, würde ich dies empfehlen, da die meisten RDBMS's schneller als var suchen können

2
Brad

Bei Einsätzen gibt es Leistungsprobleme. Ich kann sicher sagen, dass das Einfügen in eine große Tabelle, die einen Index über eine Varchar-Spalte hat, sehr langsam sein kann. (bis zu 50x)

0
Erhard Dinhobl