Ich habe eine Abfrage in MySQL (in einer gespeicherten Prozedur verwendet), die nach Namen und einem anderen Feld sucht. Wenn ich verschiedene Kombinationen dieser Suchparameter verwende, bekomme ich schnelle Ergebnisse (zwischen 1 und 2s), aber mit einigen bestimmten Werten, bekomme ich eine Abfrage, die 9s dauert, um Ergebnisse auf der Produktionswebseite zurückzugeben. Das folgende ist das, was ich aus der EXPLAIN-Anweisung bekam:Langsame MySQL-Abfrage
id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
--------------------------------------------
1, SIMPLE, Names, ref, IX_Name, IX_Name, 17, const, 3173, Using where
Namen als varchar deklariert wird (40) und das andere Feld ist Unsigned smallint (6). Ich verwende einen Index für die ersten 15 Zeichen des Namens (IX_Name), der in der Abfrage verwendet wird. Ich kann sehen, dass die langsamen Abfragen in der Spalte "rows" der EXPLAIN-Ausgabe eine recht große Anzahl von Zeilen abrufen.
Ich bin mir nicht sicher, was ich tun kann, um die Leistung zu verbessern. Gibt es irgendeinen merklichen Fehler mit dem obigen EXPLAIN-Ausgang?
Danke, Tim
Es könnte eine gute Idee sein, die langsam ausführende Abfrage zu posten. – karim79
Können Sie Ihre SQL-Anweisung anzeigen? Es kann auch nützlich sein, die Kardinalität der in Ihrer Tabelle gespeicherten Namen zu kennen. – DBMarcos99