Mysql - Leistungsverbesserung von „ORDER BY“ mit Index

Mysql - Leistungsverbesserung von „ORDER BY“ mit Index

Kann ich „ORDER BY“ verbessern, indem ich einen Index für fld_date hinzufüge?

 SELECT * FROM t1 WHERE fld1='XXX' fld2='XXX' ORDER BY fld_date;

Die Abfrage verwendet den Index von (fld1,fld2 - kombinierter Index) in der Where-Klausel. Da ORDER BY nicht genau mit dem Index übereinstimmt, ist es hilfreich, einen Index mit fld_date hinzuzufügen, um die Leistung von ORDER BY fld_date zu verbessern?

Antwort1

Sie sollten einen Index für (fld1, fld2, fld_date) hinzufügen. Bitte beachten Sie, dass dies nur funktioniert, wenn fld1 und fld2 in der WHEREKlausel auf exakte Übereinstimmung eingestellt sind. Nicht exakte Ausdrücke wie <oder >deaktivieren den Index für die Sortierung.

Antwort2

Sehen Sie sich gruppierte Indizes an. Sie können in manchen Fällen zur Leistungssteigerung bei großen Datensätzen verwendet werden. Anscheinend wurde dies früher in SQL-Datenbanken verwendet, als die Rechenleistung noch sehr begrenzt war.

Quelle: Ich arbeite mit einem erfahrenen Entwickler zusammen, der erwähnte, dass sie einen Index verwenden würden, um aufgrund von Durchsatzbeschränkungen die Auswahl der tatsächlichen Werte in der Datenbank zu vermeiden.

Laut der Dokumentation, die ich überprüft habe, handelt es sich lediglich um „Primärschlüssel“, aber sie sind nicht mehr dieselben wie früher. Möglicherweise muss man tiefer graben, um einen obskuren Leistungsvorteil daraus zu ziehen.

Weitere Informationen finden Sie hier:https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html

Siehe Überschrift „Beeinflussung der ORDER BY-Optimierung“ im zitierten Artikel.

verwandte Informationen