Hauptmenü

Untermenü

Advanced MySQL - Indizes - Details

1. UNIQUE KEY

Hierzu brauch ich wohl nicht viel sagen. So einen Index kann man auf zwei verschiedene Arten anlegen. Beim Erstellen einer Tabelle mit


CREATE TABLE blubb (
  ...
  UNIQUE KEY (feld_1feld_2);
);

und im Nachhinein mit


ALTER TABLE blubb ADD UNIQUE (feld_1feld_2);

Feinheiten

Wenn man versucht, bereits eindeutige Inhalte noch mal einzufügen, so fliegt uns eine Fehlermeldung um die Ohren. Um das zu verhindern, kann man mit einem INSERT IGNORE arbeiten. Da wird zwar nichts eingetragen, es kommt aber auch keine Fehlermeldung.

2. INDEX

Auch hier gibt es analog zu UNIQUE KEY zwei Möglichkeiten. Das /KEY ist nur ein Synonym für INDEX.


CREATE TABLE blubb (
  ...
  INDEX/KEY (feld_1feld_2);
);
ALTER TABLE blubb ADD INDEX (feld_1feld_2);

Einschränkung

Bei Feldern vom Typ VARCHAR kann man eine Begrenzung der Zeichenketten angeben, bei BLOB oder TEXT muss(!) man es sogar. Im folgenden Beispiel werden also nur die jeweils ersten vier Buchstaben in den Index aufgenommen.


ALTER TABLE blubb ADD INDEX (feld_1(4));

3. FULLTEXT

Diesen Index kann man nur auf Spalten vom Typ CHAR, VARCHAR und TEXT legen. Und das funktioniert auch nur bei Tabellen vom Typ MyISAM!


CREATE TABLE blubb (
  ...
  FULLTEXT (feld_1);
);
ALTER TABLE blubb ADD FULLTEXT (feld_1);

Ein Tipp

Bei großen Textmengen sollte man zuerst die jeweilige Tabelle mit Inhalten füllen und erst danach ein FULLTEXT setzen. Das dauert nicht so lange.

Die Abfrage

... sieht ein wenig anders aus. Denn bei einer Volltextsuche läuft das so ab. Details kommen in einem späteren Tutorial. Nur eins vorab, der Suchbegriff muss aus mindestens fünf Zeichen bestehen.


SELECT 
  FROM 
  bla
WHERE 
  MATCH (blubbblubberAGAINST ('laber');

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt