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