Dies hängt von der Verteilung der Daten ab.
Stellen Sie sich vor, ich hätte ein Buch mit 1000 eng getippten Seiten, und die einzigen Wörter in meinem Buch waren "Ja" und "Nein", die immer wieder wiederholt und zufällig verteilt wurden. Wenn ich gebeten würde, alle Instanzen von "Ja" zu kreisen, würde ein Index am Ende des Buches helfen? Es hängt davon ab, ob.
Wenn es eine halb und halb zufällige Verteilung von Ja und Nein gäbe, würde es nicht helfen, im Index nachzuschlagen. Der Index würde das Buch viel größer machen, und trotzdem würde ich schneller von vorne beginnen und mich durch jede Seite arbeiten, um nach allen Instanzen von "Ja" zu suchen und sie zu umkreisen, anstatt jedes Element darin nachzuschlagen den Index und dann den Verweis vom Indexeintrag auf die Seite, auf die er verweist.
Aber wenn es in meinem tausendseitigen Buch nur zehn Fälle von "Ja" gäbe und alles andere nur Millionen von "Nein", würde mir ein Index viel Zeit sparen, wenn ich diese zehn Fälle von "Ja" finde und sie umkreise .
In Datenbanken ist es genauso. Wenn es sich um eine 50: 50-Verteilung handelt, hilft ein Index nicht weiter - das Datenbankmodul ist besser dran, wenn Sie nur die Daten von Anfang bis Ende durchforsten (vollständiger Tabellenscan), und der Index würde die Datenbank nur vergrößern, und langsamer zu schreiben und zu aktualisieren. Wenn es sich jedoch um eine 4000: 1-Verteilung handelt (wie in diesem Thread beschrieben), kann eine Indexsuche die Verteilung erheblich beschleunigen, wenn es sich um die 1: 4000-Elemente handelt, nach denen Sie suchen.