Ich versuche, eine Abfrage zu optimieren, die einen inneren Join verwendet, und ich bin durch den Unterschied der Leistung zwischen zwei sehr ähnlichen Abfragen verwirrt.Versuchen, den Unterschied des Verhaltens zwischen zwei inneren Join-Abfragen zu verstehen
Ich hoffe, etwas Licht dazu zu bringen.
Die Tabellen sehen wie folgt aus:
Aggregates:
+-recid(key)-+-avg---+
+------------+-------+
Geschichte:
+-recid(key)-+-value-+
+------------+-------+
Ziel, für einen bestimmten Schlüssel zu erhalten ist (wir 1234 übernehmen), mittlere und Wert.
Ich habe zwei Abfragen versucht, die mir sehr ähnlich scheinen:
SELECT a.avg, b.value FROM aggregates a, history b
WHERE a.recid = b.recid
AND a.recid = 1234
nimmt 5 Sekunden
Aber
SELECT a.avg, b.value FROM aggregates a, history b
WHERE a.recid = 1234
AND b.recid = 1234
läuft in weniger als einer Sekunde ausgeführt werden.
Diese zwei Abfragen geben das gleiche Ergebnis. Ich mag den großen Unterschied in der Leistung verstehen
Markieren Sie die von Ihnen verwendeten dbms. Verschiedene Produkte optimieren auf unterschiedliche Weise. – jarlh
Übrigens, haben Sie die beiden Abfragen mehrmals in unterschiedlicher Reihenfolge ausgeführt? (Kalt/heiß Daten.) – jarlh
Ja, ich habe es versucht, es ist sehr reproduzierbar, man ist konsequent ~ 5 mal langsamer als die anderen – Maxime