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_1, feld_2);
);
und im Nachhinein mit
ALTER TABLE blubb ADD UNIQUE (feld_1, feld_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_1, feld_2);
);
ALTER TABLE blubb ADD INDEX (feld_1, feld_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 (blubb, blubber) AGAINST ('laber');
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt