Ihre Abfragen optimieren - Amazon Athena

Ihre Abfragen optimieren

Verwenden Sie die Vorschläge in diesem Abschnitt für die Optimierung Ihrer SQL-Abfragen in Athena.

Verwenden Sie LIMIT mit der ORDER-BY-Klausel

Die ORDER BY-Klausel gibt Daten in einer sortierten Reihenfolge zurück. Dazu muss Athena alle Datenzeilen an einen einzelnen Worker-Knoten senden und die Zeilen dann sortieren. Diese Art von Abfrage kann lange laufen oder sogar fehlschlagen.

Um die Effizienz Ihrer Abfragen zu erhöhen, sollten Sie sich die oberen oder unteren N-Werte ansehen und dann auch eine LIMIT-Klausel verwenden. Dadurch werden die Kosten für die Sortierung erheblich reduziert, da sowohl die Sortierung als auch die Beschränkung auf einzelne Worker-Knoten und nicht auf einen einzelnen Worker verlagert werden.

JOIN-Klauseln optimieren

Wenn Sie zwei Tabellen verbinden, verteilt Athena die Tabelle auf der rechten Seite an die Worker-Knoten und streamt dann die Tabelle auf der linken Seite, um den Join durchzuführen.

Geben Sie aus diesem Grund die größere Tabelle auf der linken Seite des Joins und die kleinere Tabelle auf der rechten Seite des Joins an. Auf diese Weise verwendet Athena weniger Speicher und führt die Abfrage mit geringerer Latenz aus.

Beachten Sie auch folgende Punkte:

  • Wenn Sie mehrere JOIN-Befehle verwenden, geben Sie die Tabellen vom größten zum kleinsten an.

  • Vermeiden Sie Kreuzverknüpfungen, sofern sie nicht für die Abfrage erforderlich sind.

Optimieren Sie GROUP-BY-Klauseln

Der GROUP BY-Operator verteilt Zeilen auf der Grundlage der GROUP BY-Spalten an die Worker-Knoten. Auf diese Spalten wird im Speicher verwiesen, und die Werte werden verglichen, während die Zeilen aufgenommen werden. Die Werte werden zusammen aggregiert, wenn die GROUP BY-Spalte übereinstimmt. Angesichts der Funktionsweise dieses Verfahrens ist es ratsam, die Spalten von der höchsten zur niedrigsten Kardinalität anzuordnen.

Verwenden Sie Zahlen statt Zeichenketten

Zahlen benötigen weniger Speicher und sind im Vergleich zu Zeichenketten schneller zu verarbeiten. Verwenden Sie nach Möglichkeit Zahlen anstelle von Zeichenketten.

Die Gesamtanzahl der Spalten reduzieren

Um den Gesamtspeicherbedarf zum Speichern Ihrer Daten zu reduzieren, begrenzen Sie die Anzahl der in Ihrer SELECT-Anweisung angegebenen Spalten.

Verwenden Sie reguläre Ausdrücke anstelle von LIKE

Abfragen, die Klauseln enthalten, z. B. LIKE '%string%' bei großen Zeichenketten, können sehr rechenintensiv sein. Wenn Sie in einer Zeichenkettenspalte nach mehreren Werten filtern, verwenden Sie stattdessen die Funktion regexp_like() und einen regulären Ausdruck. Dies ist besonders nützlich, wenn Sie eine lange Werteliste vergleichen.

Die LIMIT-Klausel verwenden

Anstatt beim Ausführen einer Abfrage alle Spalten auszuwählen, verwenden Sie die LIMIT-Klausel, um nur die Spalten zurückzugeben, die Sie benötigen. Dadurch wird die Größe des Datensatzes reduziert, der über die Pipeline zur Abfrageausführung verarbeitet wird. LIMIT-Klauseln sind hilfreicher, wenn Sie Tabellen mit einer großen Anzahl von Spalten abfragen, die auf Zeichenfolgen basieren. LIMIT-Klauseln sind auch hilfreich, wenn Sie mehrere Verknüpfungen oder Aggregationen für eine Abfrage durchführen.