Es könnte beispielsweise auch sein, daß die Leute, die das lesen, einfach nicht verstehen, was Du schreibst.
Wahr ist, ich kenne sein System im Hintergrund nicht!
Die Middleware.
Aber nach längjähriger DB Erfahrung rieche ich, wenn jemand ein DB Design verhunzen möchte.
Und das ist hier ganz klar der Fall(gewesen).
Aus meiner Sicht (ich übertreibe jetzt etwas):
Es gibt Performance Probleme, bei einigen Abfragen.
Jetzt sollen die Performance Probleme dadurch behoben werden, dass man die Daten vorm Speichern kaputt rechnet.
Der eindeutig bessere Weg wäre:
Die Datenbank so einrichten, dass sie für alle Spalten in der Where Klausel einen Index erstellt.
Den Index hält sie bei allen Veränderungen im Datenbestand aufrecht.
Das heißt, INSERT, UPDATE und DELETE werden etwas ausgebremst, aber dafür wird SELECT um Größenordnungen schneller. Und das ist ja das was gewünscht wird.
Bei 1,9 Millionen zutreffenden Datensätzen, werden beim SQL Statement, in Posting #20, auch alle 1,9 Millionen Werte an die Anwendung geliefert. Durch das *chen auch alle Spalten.
Diese 1,9 Millionen Datensätze werden in der Anwendung aufsummiert und gezählt.
Würde man die von mir vorgeschlagene Indexierung UND Aggregation verwenden, dann würden nur 2 Werte von der DB zur Anwendung geliefert werden.
summe und anzahl.
Durch die Reduzierung der Spaltenanzahl ist auch die einzelne Resultzeile mindestens nur halb so groß, wie mit dem * .
Das bedeutet, dass die Transferkosten, von Datenbank zu Anwendung, bei den Abfragen mindestens um den Faktor (1900000*2) sinken.
Oder klarer:
Alleine der Datentransfer beschleunigt sich um den Faktor 3,8 Millionen.
Auch kann die DB die Daten viel schneller verarbeiten(summieren+zählen), als es die Middleware je können wird. Da steckt locker nochmal Faktor 5 drin.
Wenn ich mir das vor Augen halte, was man mit einem geschickten DB Design und geschickt formulierten Abfragen erreichen kann....
Und wenn ich dann sehe, wie das schon kaputte Design/Abfragen noch weiter kaputt gemacht werden soll, dann treibt es mir die Tränen in die Augen.
Das ist der Grund, warum ich das nicht unterstützen kann!
Oder anders:
Wenn ich sehe, wie sich jemand eine Frikadelle ans Knie nageln will, dann versuche ich ihn davon abzubringen.
Gelingt mir das nicht, dann wende ich mich ab.
Aber dabei helfen, tue ich nicht.