Ich muss seit langem auch mal eine Frage zum Thema MySQL stellen.
Ich habe eine Tabelle mit ~50.000.000 Einträge und jede Sekunde kommen so 10-20 Einträge hinzu. In dieser Tabelle gibt es nun 2 Spalten welche sehr häufig verwendet werden für Abfragen, auf denen aktuell leider kein Index ist.
Die Spalten heißen incoming_date und outgoing_date.
Aktuell braucht die folgende Abfrage ~10-30 Minuten je nach Server Auslastung.
Ich suche aktuell eine Möglichkeit diese Abfrage zu optimieren und frage mich, ob ein Multi-Index auf beide Spalten hier eine Verbesserung bring, und ob ein Index beim Vergleich von 2 Spalten überhaupt benutzt wird.
Hat da jemand Erfahrung mit?
Bevor die Frage aufkommt: Die Anwendung wird gerade Stück für Stück neu geschrieben und Ziel ist es in Zukunft auf PostgreSQL umzusteigen, aktuell soll die Abfrage aber erstmal für MySQL optimiert werden.
Wenn es in Postgres noch weitere Möglichkeiten gibt dies zu optimieren, würde ich mich auch hier über Erfahrungen freuen.
Ich habe eine Tabelle mit ~50.000.000 Einträge und jede Sekunde kommen so 10-20 Einträge hinzu. In dieser Tabelle gibt es nun 2 Spalten welche sehr häufig verwendet werden für Abfragen, auf denen aktuell leider kein Index ist.
Die Spalten heißen incoming_date und outgoing_date.
Aktuell braucht die folgende Abfrage ~10-30 Minuten je nach Server Auslastung.
Code:
SELECT m.id, m.incoming_date, m.outgoing_date FROM message m WHERE m.outgoing_date IS NULL OR m.incoming_date > m.outgoing_date
Hat da jemand Erfahrung mit?
Bevor die Frage aufkommt: Die Anwendung wird gerade Stück für Stück neu geschrieben und Ziel ist es in Zukunft auf PostgreSQL umzusteigen, aktuell soll die Abfrage aber erstmal für MySQL optimiert werden.
Wenn es in Postgres noch weitere Möglichkeiten gibt dies zu optimieren, würde ich mich auch hier über Erfahrungen freuen.
Kommentar