AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Index auf Feld mit zwei werten?
Thema durchsuchen
Ansicht
Themen-Optionen

Index auf Feld mit zwei werten?

Ein Thema von Karstadt · begonnen am 22. Mär 2006 · letzter Beitrag vom 22. Mär 2006
Antwort Antwort
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

Index auf Feld mit zwei werten?

  Alt 22. Mär 2006, 09:59
Datenbank: MYSQL • Version: 4.1 • Zugriff über: Direkt
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
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Index auf Feld mit zwei werten?

  Alt 22. Mär 2006, 10:01
Gerade wenn du viele Datensätze mit nur wenig möglichen Werten hast machen sich Indizes besinders schnell bemerkbar.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#3

Re: Index auf Feld mit zwei werten?

  Alt 22. Mär 2006, 10:27
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 ?
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#4

Re: Index auf Feld mit zwei werten?

  Alt 22. Mär 2006, 10:33
Positiv
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Index auf Feld mit zwei werten?

  Alt 22. Mär 2006, 15:43
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.
Andreas
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Index auf Feld mit zwei werten?

  Alt 22. Mär 2006, 15:53
Zitat von shmia:
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.

[1] "Wieviele haben 1? Wieviele 2?" Sollte sehr schnell abfragbar sein.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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