Intressant nog har jag alltid trott att om man refererar till en annan Dune-fråga så är det ganska ineffektivt eftersom Trino-optimeraren inte planerar den externa frågan och den aktuella frågan tillsammans. Men det visar sig att det gör det. Jag har Fråga A: en tabell för Morpho Markets för tillgång/uttag. Det här är hela händelseloggen, så den borde vara ganska tung. Sedan filtrerar Fråga B, som refererar till Fråga A, på en specifik market_id. Det visar sig att Trino fortfarande är tillräckligt smart för att göra predikat-pushdown (ett fint uttryck för filtrering så tidigt som möjligt) på Fråga A. Enkelt uttryckt överförde den mitt market_id filter till Fråga A även om filtret användes på Fråga B. Jag är inte säker på om Trino för mer komplexa frågor kommer att göra samma sak. Men konsekvenserna av detta är: Du kanske inte behöver föroptimera eller göra tidig filtrering på bastabellerna. Om dina filter finns på de sista mil-tabellerna, som är tabeller som vanligtvis används för att göra dashboards, kan Trino trycka ner filtren uppströms (vilken konstig mening). Jag var ganska orolig för detta i början och överoptimerade lite. Men varningen är att du bara kan göra detta om du redan förväntar dig att nedströmstabellerna kommer att ha någon form av filtrering. För om du inte gör denna optimering vid uppströmstabellerna kommer det att kosta dig många krediter. Självklart gäller standardregeln vid optimering, till exempel om du gör en fönsterfunktion innan du filtrerar på vissa värden så kommer det att förstöra dig eftersom du då kommer att använda fönsterfunktionen över hela datamängden. Inte bra. Så egentligen beror utformningen av frågan på det förväntade användningsfallet för nedströmstabellen. Jag är inte säker på om jag är begriplig eller om det här är rätt. Kanske kan någon också kolla upp detta. Det är dock ganska häftigt.