![]() |
Datenbank: MySQL • Version: - • Zugriff über: -
Index und die Schnelligkeit
Hallo Leute,
ich bin noch ein Anfänger im Bereich der Programmierung, arbeite jedoch bereits mit Datenbanken. Ich höre immer von vielen Programmierern, dass Indexes bei vielen Datensätzen eine deutliche Beschleunigung der Tasks hervorbringt, doch ich frage mich wie das genau funktioniert? Würde mich freuen, wenn ich eine Antwort darauf erhalte. Meine Tabellenstruktur sieht folgendermaßen aus: id - name - ort - ortsteil - plz - land - timestamp Ich habe hier über 250.000 Einträge in dieser Tabelle und frage bei einem SELECT immer den ORT ab. Wie funktioniert dort ein Index? was genau sind die Vorteile und Nachteile? Freue mich auf euer Feedback! |
AW: Index und die Schnelligkeit
Hallo lisamarie87,
ein Index erhöht die Geschwindigkeit bei der Suche nach einer Zeile. Also sozusagen die "WHERE"-Klausel in der SQL-Abfrage. Welche Spalten du abfragst (SELECT), ist irrelevant. Also ob du "SELECT ort FROM tabelle" ausführt oder "SELECT * FROM tabelle" – das ist egal, da kann der Index nichts beschleunigen. Wenn du aber z.B. "SELECT * FROM tabelle WHERE ort='Frankfurt'" ausführst – dann macht es einen Unterschied. Denn ohne Index müsste das DBMS alle Zeilen der Reihe nach durchgehen (Full Table Scan) und prüfen, ob die WHERE-Klausel zutrifft. Das wird natürlich immer langsamer, je mehr Einträge in der Datenbank sind. Mit Index geht es wesentlich schneller. Stell dir ein Telefonbuch (ganz klassisch, aus Papier) vor. Wenn du zu einem Namen die Telefonnummer finden willst, dann geht das recht schnell, weil die Namen sortiert sind. Das ist die Suche mit Index. Jetzt stell dir vor, das Telefonbuch wäre nicht sortiert, sondern die Paare aus Namen und Nummern würden in zufälliger Reihenfolge drinstehen. Dann würdest du ewig nach dem richtigen Eintrag suchen. Das ist die Suche ohne Index. Ein Index ist in der Regel als ![]() |
AW: Index und die Schnelligkeit
Hey! Willkommen in der Delphi-Praxis! :)
Im Prinzip hat Namenloser schon das wesentliche genannt, ich würde nur noch ergänzen, dass deine spezielle Tabelle ja eine Spalte "id" hat und du diese vermutlich als Primärschlüssel (und unique) angelegt hast. Das ist auch schon ein Index der Tabelle dann. Eine Tabelle kann aber mehrere "Indexspalten" haben, wenn man diese explizit anlegt. Das macht man über ![]() Viel Spaß hier bei uns! :) Brighty |
AW: Index und die Schnelligkeit
Moin...:P
Zitat:
Zitat:
PS: Hast du dich mal mit der MySQL Lizenzfalle beschäftigt? Kämen denn andere DBMS auch in Frage? Zitat:
![]() ...ein wichtiger Teil des Datenbankdesigns. 8-) Für den Anfang reicht die erste bzw. zweite Normalform. :thumb: |
AW: Index und die Schnelligkeit
Hey,
vielen Dank schonmal für die zahlreichen Antworten! Das ging ja extrem schnell :D Jetzt verstehe ich endlich mal, was ein Index ist und wie es anzuwenden ist. Sehr interessant! Hab vorhin mal in meiner Tabelle ausprobiert (da einfach ein Index auf die Orts-Spalte gesetzt) und die Abfragen dauern jetzt nicht mehr so ewig. Danke euch! @ haentschman: Was genau meinst du für eine Lizenzfalle? Davon habe ich noch nie gehört? :?: |
AW: Index und die Schnelligkeit
Zitat:
Du landest bei mySQL recht schnell und unwillkürlich bei dem Problem, dass es bei Verkauf Deiner Programme, die Du ggF. mit mySQL oder mySQL Client Komponenten auslieferst nicht mehr kostenlos ist. Ich bin da nicht ganz firm, weil ich niemals mySQL einsetzen würde und es mich eigentlich nicht interessiert. Zum Thema: Eine Tabelle kann mehrere Indize haben. Ein Index kann mehrere Spalten indizieren in Kombination, Reihenfolge der Spalten kann dabei von Bedeutung sein (im Verhältnis zur späteren Abfrage) Ein Index hat einen Namen. Eine Tabelle mit PK bekommt idr. automatisch einen Index "zugeteilt". (Man hat also Indizes in seiner DB, ohne dass man je darüber nachgedacht hat) Ein Index ändert nicht die Funktionsweise der Tabellen (nur die Geschwindigkeit) (Ok, im Fall "ohne Index= unendlich langsam" gewissermaßen auch die Funtkion) Art, Verwendung und Effekt eines Index ist in jedem DB System und auch in jeder Version eines Systems anders. Das "Gegenstück" zum Index ist der Optimizer, der vorhande Indizes analysiert und je Abfrage entscheidet, wie er sie benutzen wird. Der Optimizer erstellt einen Ausführungsplan für jede Abfrage. Den Ausführungsplan kann man sich anzeigen lassen, falls man sich wundert, warum die Abfrage so langsam ist. |
AW: Index und die Schnelligkeit
Zitat:
![]() Zitat:
|
AW: Index und die Schnelligkeit
Zitat:
|
AW: Index und die Schnelligkeit
Zitat:
Zitat:
|
AW: Index und die Schnelligkeit
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz