Interessanterweise habe ich immer gedacht, dass es ziemlich ineffizient wäre, wenn man auf eine andere Dune-Abfrage verweist, da der Trino-Optimierer die externe Abfrage und die aktuelle Abfrage nicht zusammen plant. Aber es stellt sich heraus, dass er es doch tut. Ich habe Abfrage A: eine Tabelle für das Angebot/Abhebung von Morpho-Märkten. Dies ist das vollständige Ereignisprotokoll, also sollte es ziemlich umfangreich sein. Dann Abfrage B, die auf Abfrage A verweist und nach einer bestimmten market_id filtert. Es stellt sich heraus, dass Trino immer noch schlau genug ist, um Predicate Pushdown (ein schicker Begriff für das Filtern so früh wie möglich) auf Abfrage A durchzuführen. Einfach gesagt, er hat meinen market_id-Filter auf Abfrage A übertragen, obwohl der Filter auf Abfrage B angewendet wurde. Ich bin mir nicht sicher, ob Trino bei komplexeren Abfragen dasselbe tun wird. Aber die Implikationen davon sind: Vielleicht müssen Sie die Basistabellen nicht voroptimieren oder frühzeitig filtern. Wenn Ihre Filter auf den letzten Tabellen liegen, die typischerweise verwendet werden, um Dashboards zu erstellen, kann Trino die Filter stromaufwärts verschieben (was für ein seltsamer Satz). Ich war anfangs ziemlich besorgt darüber und habe ein wenig überoptimiert. Aber die Warnung ist, dass Sie dies nur tun können, wenn Sie bereits erwarten, dass die nachgelagerten Tabellen eine Art von Filterung haben werden. Denn wenn Sie diese Optimierung nicht bei den stromaufwärts liegenden Tabellen durchführen, wird es Sie viele Credits kosten. Natürlich gilt die Standardregel bei der Optimierung, dass, wenn Sie eine Fensterfunktion vor dem Filtern nach bestimmten Werten durchführen, es Sie teuer zu stehen kommt, weil Sie über den gesamten Datensatz Fensterfunktionen anwenden werden. Nicht gut. Also hängt das Design der Abfrage wirklich vom erwarteten Anwendungsfall der nachgelagerten Tabelle ab. Ich bin mir nicht sicher, ob ich Sinn mache oder ob das richtig ist. Vielleicht kann das auch jemand überprüfen. Es ist jedoch ziemlich cool.