Ich habe eine MySQL InnoDB-Tabelle, events
, mit 3 Reihen:MySQL-Abfrage dauert länger mit Indizes?
event_id ---> int
start ---> long
end ---> long
ich eine einfache Abfrage für alle Veranstaltungen immer innerhalb eines gewissen Bereichs geschrieben haben, dass ein Konflikt mit einem anderen Ereignis:
select a.* from events a, events b
where a.event_id != b.event_id and
a.start < b.end and
b.start < a.end
Der Tisch hat ~ 10K Zeilen und dauerte ~ 2 Sekunden zur Ausführung. Während ich versuchte, mit der Tabelle zu optimieren, um die Leistung zu erhöhen, fügte ich Indizes zu den Spalten start
und end
hinzu. Aus irgendeinem Grund verlangsamte diese Leistung dramatisch um einen Faktor von 5x. Weiß jemand, oder haben irgendwelche Ideen, warum das Hinzufügen dieser Indizes Leistung so schlecht verletzen würde?
Gibt es eine Möglichkeit, die Abfrage so zu strukturieren, dass ich die Indizes behalten kann (sie werden anderen Abfragen helfen), aber immer noch den Cross-Join und Filter durchführen? – JaredC