Weil ich keine Lust habe mir beim Native-IO auch noch Group-By's selber zu programmieren.
Außerdem enthebt mich SQL sämtlicher Levelcheck-Probleme!
Zusätzlich ist der Index ja nur die halbe Wahrheit.
Subselect's, CTE, Joins verschiedener Ausprägungen sind nun mal nicht mehr selber in einer vorgegebenen Zeit zu programmieren.
Es reicht mir, mit meinen Methoden SQL's so zu optimieren, dass der Optimzer zufrieden ist, die Daten vor allem schnell genug kommen und (meistens) der korrekte Index verwendet wird.
Da ich nicht mit "updatable Selects" arbeite ist es mir häufig lieber, SQL kopiert die benötigten Daten in Zwischentabellen, was man ja nicht beeinflussen kann.
Bei BI habe ich festgestellt, dass es um Faktoren schneller ist, Teilergebnisse selber in temporäre Ergebnistabellen zu packen als alles in einem gigantischen SQL zu verpacken.
So habe ich schon Abfragezeiten von zig Minuten auf wenige Sekunden reduziert.
SQL kann eben nicht alles ersetzen, es hilft es schon mal, auch hier "schrittweise" zu denken.