Ich bin hauptsächlich ein Actionscript-Entwickler und keineswegs ein Experte für SQL, aber von Zeit zu Zeit muss ich einfach Server-seitiges Zeug entwickeln. Also, ich dachte, ich würde erfahrenere Leute über die Frage im Titel fragen.Macht es Sinn, einen Index zu verwenden, der eine geringe Kardinalität hat?
Mein Verständnis ist, dass Sie nicht viel gewinnen, indem Sie einen Index in einer Spalte setzen, die einige unterschiedliche Werte enthalten wird. Ich habe eine Spalte, die einen booleschen Wert enthält (eigentlich ist es ein kleines int, aber ich benutze es als Flag), und diese Spalte wird in den WHERE-Klauseln der meisten Abfragen verwendet, die ich habe. In einem theoretischen "durchschnittlichen" Fall wird die Hälfte der Datensätze 1 und die andere Hälfte 0 sein. In diesem Szenario könnte die Datenbank-Engine einen vollständigen Tabellenscan vermeiden, muss aber trotzdem viele Zeilen lesen (Gesamtreihen/2).
Also, sollte ich diese Spalte zu einem Index machen?
Für die Aufzeichnung verwende ich Mysql 5, aber ich interessiere mich mehr für eine allgemeine Begründung, warum es Sinn macht, eine Spalte zu indizieren, die ich kenne, die eine niedrige Kardinalität haben wird.
Vielen Dank im Voraus.
Danke für Ihre Antwort. In diesem Fall sortiere ich jedoch nicht in dieser Spalte. Es dient nur dazu, einen Eintrag als aktiviert/deaktiviert zu kennzeichnen. Ich benutze es im Grunde für die weiche Löschung. Deshalb muss ich es in der WHERE-Klausel der meisten Abfragen verwenden. –