Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Index auf Feld mit zwei werten? (https://www.delphipraxis.net/65908-index-auf-feld-mit-zwei-werten.html)

Karstadt 22. Mär 2006 08:59

Datenbank: MYSQL • Version: 4.1 • Zugriff über: Direkt

Index auf Feld mit zwei werten?
 
Arbeite mit eine tabelle die 10.000 ds hat. ist das sinnvoll einen Inden zu setzen auf einen feld der nur zwei werte annehmen kann?

Auf diesen Feld setze ich eine Sql anweisung

Elvis 22. Mär 2006 09:01

Re: Index auf Feld mit zwei werten?
 
Gerade wenn du viele Datensätze mit nur wenig möglichen Werten hast machen sich Indizes besinders schnell bemerkbar. ;)

Karstadt 22. Mär 2006 09:27

Re: Index auf Feld mit zwei werten?
 
Zitat:

Gerade wenn du viele Datensätze mit nur wenig möglichen Werten hast machen sich Indizes besinders schnell bemerkbar.
Ist das positiv oder negativ gemeint ? :)

Thanatos81 22. Mär 2006 09:33

Re: Index auf Feld mit zwei werten?
 
Positiv ;-)

shmia 22. Mär 2006 14:43

Re: Index auf Feld mit zwei werten?
 
Zitat:

Zitat von Karstadt
Arbeite mit eine tabelle die 10.000 ds hat. ist das sinnvoll einen Inden zu setzen auf einen feld der nur zwei werte annehmen kann?

Das ist nicht sinnvoll.
Der Indexbaum hat dann nur 2 "Hauptäste" und der Server verplempert viel Zeit den Index auzugrasen und mit der Tabelle zu "verquicken".
Aus diesem Grund kann beim MS SQL Server auch kein Index auf ein bit-Feld gelegt werden.

"Gerade wenn du viele Datensätze mit nur wenig möglichen Werten hast machen sich Indizes besinders schnell bemerkbar."
Genau das Gegenteil ist der Fall: ein Index mit einer 50% Wahrscheinlichkeit liefert die Hälfte
der Ausgangsmenge; das bringt nix, da wäre ein Full-Table-Scan schneller.

Ein Index, der nur eine sehr geringe Trefferwahrscheinlichkeit hat, liefert wenige Datensätze, das lohnt sich.

Elvis 22. Mär 2006 14:53

Re: Index auf Feld mit zwei werten?
 
Zitat:

Zitat von shmia
Zitat:

Zitat von Karstadt
Arbeite mit eine tabelle die 10.000 ds hat. ist das sinnvoll einen Inden zu setzen auf einen feld der nur zwei werte annehmen kann?

Das ist nicht sinnvoll.
Der Indexbaum hat dann nur 2 "Hauptäste" und der Server verplempert viel Zeit den Index auzugrasen und mit der Tabelle zu "verquicken".
Aus diesem Grund kann beim MS SQL Server auch kein Index auf ein bit-Feld gelegt werden.

"Gerade wenn du viele Datensätze mit nur wenig möglichen Werten hast machen sich Indizes besinders schnell bemerkbar."
Genau das Gegenteil ist der Fall: ein Index mit einer 50% Wahrscheinlichkeit liefert die Hälfte
der Ausgangsmenge; das bringt nix, da wäre ein Full-Table-Scan schneller.

Ein Index, der nur eine sehr geringe Trefferwahrscheinlichkeit hat, liefert wenige Datensätze, das lohnt sich.

Absolut richitg, ich hatte die Frage nur überflogen und reflexartig geantwortet.
Bei 2 Werten ist es natürlich wesentlich aufwendiger von Index zurück auf die Daten zu springen.
Als Filterkriterium ist das aber eigentlich schon schnieke, wenn du die Details eines Parent Recs abfragen willst (z.B.: 10.000 Details von 300 Parents). ;) Nur bei 2 ist das ein wenig,... nunja.
Es ist nicht sinnlos[1], aber auch nicht sehr sinnvoll.
Sorry, falls ich durch meine vorschnelle, dämliche Antwort irgendwelche Mehrarbeit bewirkt habe. :duck:

[1] "Wieviele haben 1? Wieviele 2?" Sollte sehr schnell abfragbar sein. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:01 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