Optimieren Sie Ihre Abfragen - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Optimieren Sie Ihre Abfragen

Verwenden Sie die Vorschläge in diesem Abschnitt, um Ihre SQL Abfragen in Athena zu optimieren.

Verwenden Sie es LIMIT zusammen 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, schauen Sie sich den oberen oder unteren Bereich an N Werte und verwenden Sie dann auch eine LIMIT Klausel. 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.

JOINKlauseln 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.

Verwenden Sie die LIMIT Klausel

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.