Ilja: mysql - Kardinalität?

Beitrag lesen

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