Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Indizes in MySQL (https://www.delphipraxis.net/71201-indizes-mysql.html)

faux 10. Jun 2006 20:40

Datenbank: MySQL • Version: 4 • Zugriff über: irrelevant

Indizes in MySQL
 
Hallo!

Ich hätte mal ne Frage:
Ich benutze MySQL zar schon seit ein paar Jahren, jedoch weiß ich bis jetzt nicht genau wofür Indizes gut sind. :oops:
Könnte mir das wer mal in ein paar Sätzen erklären oder mir einen Link posten wo das erklärt wird? Unter Google werde ich nicht so wirklich fündig auf der Suche nach einer akzaptablen Antwort.

Grüße
Faux

mkinzler 10. Jun 2006 20:46

Re: Indizes in MySQL
 
Indizes beschleunigen Abfragen. Ein Index ist ein Art Inhaltsverzeichnis der Tabelle, geordnet nach bestimmten Feldern.

faux 10. Jun 2006 20:57

Re: Indizes in MySQL
 
Zitat:

Zitat von mkinzler
Indizes beschleunigen Abfragen. Ein Index ist ein Art Inhaltsverzeichnis der Tabelle, geordnet nach bestimmten Feldern.

Das heißt, wenn ich auf ein Feld eine 1:m oder m:n Beziehung habe, sollte ich für dieses einen Index anlegen?
Z. B. wenn ich eine Tabelle mit Forumseinträgen habe, die auch eine Spalte user_id enthält, die dann m:1 auf einen User verweist, sollte user_id ein index sein?

Grüße
Faux

3_of_8 10. Jun 2006 21:01

Re: Indizes in MySQL
 
Wenn du z.B. folgendes machst:

SQL-Code:
SELECT * FROM users WHERE userid=42
Dann reicht ein PRIMARY Index mit autoincrement auf userid.

Wenn du folgendes machst:

SQL-Code:
SELECT * FROM items WHERE itemname='blubb' AND userid=42
Dann wäre ein INDEX über die ersten 10 Bytes von itemname und über userid gut zu gebrauchen.

Konzept verstanden?

faux 10. Jun 2006 21:03

Re: Indizes in MySQL
 
Also sollte man jedes Feld, das zur Verknüpfung von Einträgen benutzt wird Indizieren?

mkinzler 10. Jun 2006 21:04

Re: Indizes in MySQL
 
Nein, für dieses Feld existiert dann ein Index.

Beispiel
Tabelle
[/b]ID Name Vorname[/b]
1 Maier Willy
2 Frank Peter
3 Schmidt Anne

Index für Feld Name
Frank 2
Maier 1
Schmidt 3

Index für Feld Vorname
Anne 3
Peter 2
Willy 1

3_of_8 10. Jun 2006 21:05

Re: Indizes in MySQL
 
@faux: Nicht unbedingt. Wenn die Abfrage von wenig Feldern abhängt, kann man das gut machen. Bei VARCHAR und TEXT würde ich nur die ersten 5-10 Zeichen indizieren.

Wenn es mehrere Felder werden, würde ich nur die wichtigsten indizieren, also die, die die meisten "falschen" Einträge ausschließen, da ansonsten der Index irgendwann ins Unermessliche wächst.

mkinzler 10. Jun 2006 21:06

Re: Indizes in MySQL
 
Zitat:

Also sollte man jedes Feld, das zur Verknüpfung von Einträgen benutzt wird Indizieren?
Ja, wenn diese Abfrage öfters kommt ja. Den Indizes beschleunigen die Abfrage, verlangsamen aber die Inserts, da ja alle vorhandenene Indizes aktualisiert werden müßen.

faux 10. Jun 2006 22:14

Re: Indizes in MySQL
 
Danke für eure Antworten! ;)

Zwei Fragen noch:

Zitat:

Zitat von 3_of_8
@faux: Nicht unbedingt. Wenn die Abfrage von wenig Feldern abhängt, kann man das gut machen. Bei VARCHAR und TEXT würde ich nur die ersten 5-10 Zeichen indizieren.

Wie lautet der SQL-Syntax um dies zu erledigen?

Wo liegt der Unterschied zwischen einem "Normalen" Index und einem Fulltext index?
SQL-Code:
ALTER TABLE series ADD INDEX serie_title (serie_title);
ALTER TABLE series ADD FULLTEXT serie_title (serie_title);
Grüße
Faux

3_of_8 10. Jun 2006 22:21

Re: Indizes in MySQL
 
Schau halt mal in die MySQL Dokumentation. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz