3 x EinfachIndex

Hallo, Datenbank-Fachleute!

Für einen schnellen Zugriff auf eine Tabelle benötige ich einen Index (Felder ArtikelNr, ArtikelBezeichnung, EAN-Code).

Frage: ist es sinnvoller, drei Einzelindizes anzulegen, also für jedes Feld einen eigenen Index, oder einen Index, der alle drei Felder enthält? Oder ist die Art des Zugriffes entscheidend (also für jede Art von WHERE-Klausel den entsprechenden Index generieren)?

Danke für eure Hilfe!

Hi,

Frage: ist es sinnvoller, drei Einzelindizes anzulegen, also
für jedes Feld einen eigenen Index, oder einen Index, der alle
drei Felder enthält? Oder ist die Art des Zugriffes
entscheidend (also für jede Art von WHERE-Klausel den
entsprechenden Index generieren)?

Der Index wird nur für Suchzugriffe verwendet. Wenn in Deiner WHERE-Klausel also z.B. ID und EAN-Code kombiniert werden, macht es keinen Sinn, einen Index für die Bezeichnung anzulegen. Im Gegenteil: Da die Indizes immer aktuell bleiben müssen, werden durch sie alle Schreibzugriffe langsamer. Das lohnt für einen überflüssigen Index nicht.

Gruß

J.

Hallo Jose!

Die Zugriffe erfolgen entweder über die ArtNr ODER den EAN-Code oder die Artikelbezeichnung, aber nie kombiniert.

Die Alternativen lauten für mich jetzt (in SQL):

Create Index SCHLUESSEL On ARTIKEL (ARTNR Long, EAN Text(13), ARTBEZ Text(35))

oder

Create Index ARTNR On ARTIKEL (ARTNR Long)
Create Index EAN On ARTIKEL (EAN Text(13))
Create Index ARTBEZ On ARTIKEL (ARTBEZ Text(35))

Nun gibt es gelegentlich noch ein oder zwei weitere Felder, mit denen gesucht wird (irgendwelche Kennungen) - hier aber kombinierte Abfragen (WHERE-Bedingung mit AND-Verknüpfungen, z.B. WHERE ARTBEZ like ‚Hugo*‘ and PREIS

Hi,

Die Zugriffe erfolgen entweder über die ArtNr ODER den
EAN-Code oder die Artikelbezeichnung, aber nie kombiniert.

OK

Die Alternativen lauten für mich jetzt (in SQL):

Create Index SCHLUESSEL On ARTIKEL (ARTNR Long, EAN Text(13),
ARTBEZ Text(35))

Die nicht, da die kombinierten Indizes nur bei AND-Verknüpfungen greifen.

Create Index ARTNR On ARTIKEL (ARTNR Long)
Create Index EAN On ARTIKEL (EAN Text(13))
Create Index ARTBEZ On ARTIKEL (ARTBEZ Text(35))

Die Alternative würde ich empfehlen.

Nun gibt es gelegentlich noch ein oder zwei weitere Felder,
mit denen gesucht wird (irgendwelche Kennungen) - hier aber
kombinierte Abfragen (WHERE-Bedingung mit AND-Verknüpfungen,
z.B. WHERE ARTBEZ like ‚Hugo*‘ and PREIS