Machen Indizes beschleunigen, größer als > Vergleich in MySQL?
Habe ich ein Veranstaltungs-Tabellen in meiner db, die enthält unter anderem die Spalten start_date und end_date.
Ich Häufig Abfragen ausführen, wie
where start_date > 'some starting date' and end_date < 'some end date'
Wird ich profitieren von einem index erweitert die Spalten start_date und end_date? Ich heraus, dass dies nicht ein = Vergleich, aber vielleicht trotzdem.
- Versuchen Sie ein erklären, auf die Abfrage vor und nach der Indizierung es.
- Kurz gesagt: Wenn deine Abfrage liefert nur ein paar Zeilen, weil dieser Zustand dann der index nützlich ist.
- mögliche Duplikate von: stackoverflow.com/questions/12957781/...
- Dass die Formulierung Kontrollen für "ganz in", während eine ähnliche Formulierung Prüfungen für die "überlappung": "start" < "Ende" und " Ende > "start". Was wollen Sie diskutieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den MySQL-Optimierer verwendet die Indizes, wo es denkt, es zu tun angemessen ist:
Quelle: Vergleich von B-Tree und Hash-Indizes
Finden Sie vielleicht dieser interessant:
Wie MySQL Verwendet Die Indizes,
Und diese Antwort und diese Antwort zu Warum hat MySQL keinen index für eine mehr als Vergleich?.
Ja, Datenbank, verwenden diese Indizes und sollte es die performance erhöhen.
Hinweis: es können nicht die zwei disctinct Indizes gleichzeitig für eine gute Leistung müssen Sie eine multi-column-index.
In meiner Erfahrung, werden Indizes oft nicht benutzt, für größer als /kleiner als Bedingungen, denn der Bereich ist offen und somit gibt es O(n) passenden Zeilen für eine Tabelle mit n Zeilen.
Jedoch betweens, die in der Regel tun Indizes verwenden, da die Bandbreite begrenzt ist, so gibt es O(1) übereinstimmende Zeilen, so können Sie diesen trick verwenden:
Da das Ende-Datum kann nicht früher sein als das Beginn-Datum, diese Vergleiche noch Sinn.
BETWEEN...AND
wird sich in ein paar Ungleichheiten, vor der Entscheidung über Optimierungen. Und Indizes betrachtet.