Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Erklärung von einem "INDEX" (https://www.delphipraxis.net/119057-erklaerung-von-einem-index.html)

Overclocker 20. Aug 2008 10:49

Datenbank: access • Zugriff über: ado

Erklärung von einem "INDEX"
 
hey,

der eine lacht vielleicht jetzt aber ich meine diese frage ernst.

und zwar habe ich im inet (u.a. auch wikipedia) schon viel über den INDEX in einer datenbank gefunden und gelesen.

doch irgendwie fehlt mir hierzu einfach der praxisbezug an einem einfachen beispiel.

ein primary key identifiziert ja einen datensatz eindeutig und hat keine duplikate.

wenn ich jetzt eine datenbank habe mit personen, und der index liegt auf der spalte id_person, was bringt mir dies dann?

wenn ich später eine abfrage mache
SQL-Code:
Select Name,Vorname,Adresse, PLZ,Ort from personen where name like "%Hans%"
, was bringt mir dann der index bzw. was müsste ich besser machen damit es mir was bringt???

hoffe es kann mir einer einfach erklären :)

dankeschön

mkinzler 20. Aug 2008 10:56

Re: Erklärung von einem "INDEX"
 
Ein Index ist wie eine Art Inhaltverzeichnis anhand der beinhaltenden Felder.

Tabelle
ID Vorname Name Strasse Plz Ort
1 Hans Mayer Hauptstr. 1 12345 Musterort
2 Elke Mayer Hauptstr. 1 12345 Musterort
3 Hans Müller Seitenweg 5 54321 Testbach

Index über Vorname
Wert DS
Elke 2
Hans 1
Hans 3

Index über Name
Wert DS
Mayer 1
Mayer 2
Müller 3

Bei deiner Like-Abfrage wird aber kein Index verwendet.

Overclocker 20. Aug 2008 10:59

Re: Erklärung von einem "INDEX"
 
und wieso ändert sich die reihenfolge des indizes wenn ich 1x vorname habe und 1x name?

am besten ist doch wenn ich über die spalte vorname und name einen index mit duplikaten setze, dann erstellt er mir sozusagen ein inhaltsverzeichnis mit id_person,name,vorname oder?

gut zum glück sind in meiner datenbank die wichtigsten felder eh PKs und schon indiziert, dann muss ich nachträglich nichts mehr großartig ändern.

danke mkinzler für die erklärung :) :cheers:

mkinzler 20. Aug 2008 11:02

Re: Erklärung von einem "INDEX"
 
Es ist nach Vorname bzw. Name sortiert.

DeddyH 20. Aug 2008 11:02

Re: Erklärung von einem "INDEX"
 
Oder ein anschauliches Beispiel:
Du möchtest bei einem großen Versandhaus Bettwäsche bestellen. Nun kannst Du den 1500-Seiten-Katalog von vorne an durchblättern, bis Du das Gesuchte gefunden hast oder schaust hinten im Index unter "B", dann unter "Bettwäsche" und findest dort die Seitennummer, die Du dann gezielt anblättern kannst.

Overclocker 20. Aug 2008 11:07

Re: Erklärung von einem "INDEX"
 
ah ok glaub etz blick ichs langsam wann und wo man einen index setzen muss :)

dankeschön für die guten beispiele :mrgreen:


:dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp:

DeddyH 20. Aug 2008 12:16

Re: Erklärung von einem "INDEX"
 
Übrigens nützt Dir bei einer Abfrage
Zitat:

SQL-Code:
...where name like "%Hans%"

auch kein Index weiter, da so immer ein Full table Scan durchgeführt werden muss.

mkinzler 20. Aug 2008 12:35

Re: Erklärung von einem "INDEX"
 
Zitat:

Zitat von DeddyH
Übrigens nützt Dir bei einer Abfrage
Zitat:

SQL-Code:
...where name like "%Hans%"

auch kein Index weiter, da so immer ein Full table Scan durchgeführt werden muss.

#2 :zwinker:

Namenloser 20. Aug 2008 12:49

Re: Erklärung von einem "INDEX"
 
Ich weiß nicht, wie es bei Access ist, aber bei MySQL kann man auch einen Volltext-Index anlegen, der zwar geschwindigkeitsmäßig auch noch nicht ganz ausgereift sein soll, aber immer noch schneller als eine LIKE-Abfrage sein sollte. Es kommt aber natürlich auf die Datenmenge an, ob sich so ein Index lohnt.

Du kannst dich ja mal schlau machen, ob Access eine ähnliche Funktion bietet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.

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