mysql - Kardinalität?
Martin87
- datenbank
Hi Leute,
ich habe eben bei google nach "Kardinalität" gesucht um heraus zu finden, was es damit auch sich hat. Ich habe wohl schon gelesen, dass eine hohe Kardinalität besser ist als eine kleine. Ich habe soeben ein FULLTEXT angelegt und lese in meiner Datenbank das dieses Feld eine Kardinalität hat von "kein" ^^ Was hat es damit auf sich, was genau ist eine Kardinalität? Wurde aus allem was ich bisher gelesen habe nicht wirklich schlau...
yo,
Was hat es damit auf sich, was genau ist eine Kardinalität? Wurde aus allem was ich bisher gelesen habe nicht wirklich schlau...
der begriff ist insofern verwirrent, weil er in bezug auf datenbanken zwei bedeutungen hat. ich habe mal schnel wikepedia überflogen und selbst dort wird es durcheinander gebracht.
zum einen werden damit die beziehung zwischen entitäten wie 1:n oder n:m bezeichnet. zum anderen geht es dabei um die verteilung der dateninhalte innerhalb einer tabelle, sprich gibt es viele unterschiedliche werte oder gleichen sich sehr viele. manchmal ist damit auch einfach nur die anzahl der datensätze einer tabelle gemeint.
deine quellen beziehen sich wohl auf letzteres, weil eine hohe kardinalität innerhalb einer tabelle bezogen auf eine bestimmte spalte für b-tree indexe besser geeignet ist.
stell dir eine tabelle mit einer millionen datensätze vor und du suchst mit der where klausel nach einem bestimmten wert in einer der spalten. sind die werte stark unterschiedlich, dann wird der b-tree index schneller zu einem ergebnis kommen, als wenn die werte sich oft gleichen, zum beispiel weil es der nachname "müller" ist. ist dies der fall, würde ein sogenannter bitmap index performanter sein.
Ilja
Hi Ilja,
erstmal danke für deine Antwort. Wenn ich das also richtig verstanden habe, kann sich der Wert ändern sobald viele Tupels in der Tabelle meiner Datenbank vorhanden ist, weil dann der Suchalgorithmus verändert wird?
yo,
Wenn ich das also richtig verstanden habe, kann sich der Wert ändern sobald viele Tupels in der Tabelle meiner Datenbank vorhanden ist, weil dann der Suchalgorithmus verändert wird?
jein, was richtig ist, kommen neue datensätze dazu, kann sich die kardinalität verändern. das muss aber nicht zwangsläufig dazu führen, dass sich der ausführungsplan ändert. das kann, muss aber nicht.
ein beispiel wäre, wenn du zum beispiel nach einen bestimmten kriterium in einer abfrage suchst, es für diese spalte aber gar keinen index gibt. dann wird das dbms immer noch die gesamte tabelle durchsuchen müssen. oder aber die tabelle ist nicht analysiert worden, sprich das dbms kennt die verteilung der datensätze gar nicht, bzw. kennt die neue verteilung nicht.
Ilja
Was genau meinst du mit analysiert?
Damit die Suche funktioniert habe ich lediglich meine Abfrage hiermit ausgestattet:
MATCH (name
) AGAINST (''.mysql_real_escape_string($_GET['name']).'' IN BOOLEAN MODE)
und in der DB folgenden Eintrag gemacht:
Name Typ Kardinalität Feld
suche FULLTEXT 1 name
yo,
Was genau meinst du mit analysiert?
die kardinalität, sprich die verteilung der datenbank hat einfluss auf den ausführungsplan einer abfrage. damit ein dbms diese aber überhaupt erst kennt, müssen die objekte der Datenbank analysiert werden. die gewonnen informationen werden dann in systemtabellen gespeichert und das dbms kann diese zum ermitteln des besten ausführungsplanes heranziehen.
Ilja
ich habe eben bei google nach "Kardinalität" gesucht um heraus zu finden, was es damit auch sich hat.
Ja, hab dasselbe Problem, wo sind die anderen Antworten eigentlich? Die waren doch noch da heute mittag. Was soll ich machen mit den Kardinalitäten?
Viele Grüße!
Franz
Hallo Franz.
ich habe eben bei google nach "Kardinalität" gesucht um heraus zu finden, was es damit auch sich hat.
Ja, hab dasselbe Problem, wo sind die anderen Antworten eigentlich? Die waren doch noch da heute mittag. Was soll ich machen mit den Kardinalitäten?
Fraglicher ist, warum dieser Thread auf NoArchive gesetzt wurde …
Einen schönen Sonntag noch.
Gruß, Mathias
yo,
Fraglicher ist, warum dieser Thread auf NoArchive gesetzt wurde …
und ganz offensichtlich auch antworten gelöscht wurden....
Ilja
Moin!
Was soll ich machen mit den Kardinalitäten?
Nichts. Die sind einfach so da, als Info für dich über die mögliche Effektivität eines Index.
Oder auf was willst du hinaus?
- Sven Rautenberg