Benutzer mit den meisten Antworten
Tägliche Sales Daten performant abfragen

Frage
-
Hallo zusammen,
wir stellen aktuell ein Salesdashboard zusammen, das verschiedene Salesdaten aufbereitet und in graphischen Reports darstellt. Die Queries auf den Tabellen sind sehr aufwändig, jedoch müssen wir sie eigenltich nur einmal am Tag berechnen, da die Salesdaten nur einmal am Tag in die Tabellen geladen werden. Welchen Ansatz empfehlt ihr auf DB Ebene, um die Abfragen so performant wie möglich zu machen?
Unsere Idee ist nun einmal am Tag (kurz nachdem die Tabellen akutalisiert wurden) die aufwändige Query abzusetzen und die Ergebnisse in einer neuen Temp-Tabelle zu speichern.
Unsere Web App würde dann Anfragen gegen die Temp-Tabellen stellen, die dann ohne aufwändige Berechnung einfach abgefragt werden können.
Ist dieses Vorgehen so best practice oder würdet ihr ein anderes Vorgehen vorschlagen?Danke,
VG,
Thorsten
Antworten
-
Hallo Thorsten,
das hört sich eigentlich ganz gut an. Wenn die Daten statisch sind und für einen Tag ermittelt werden können, bietet es sich an diese für weitere Verwendungen aufbereitet vorzuhalten.
Zusätzlich würde ich mir noch mal die Queries anschauen und ggf. Indizes ergänzen, oder andere Maßnahmen ergreifen.Falls ihr dann mal Tendenzen auswerten wollt, könnt ihr dies über die historisierten Ergebnisse in den "temporären" Tabellen machen. Diese würde ich also auch eher permanent belassen und für weitere Analysen vorhalten.
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. April 2015 10:56
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 24. April 2015 10:31
-
Wenn eine indizierte Sicht, die prinzipiell dann bequemer wären, aufgrund diverser Bedingungen (hier nachzulesen) nicht funktioniert, ist das durchaus ein Weg.
Abfragen würde ich generell nicht gegen Basis-Tabellen erlauben, somit wäre die Entscheidung welches Objekt gelesen wird, in der sptsprechenden Prozedur oder Sicht verborgen.
Andreas Wolter (Blog | Twitter)
MCSM: Microsoft Certified Solutions Master Data Platform, MCM, MVP
www.SarpedonQualityLab.com | www.SQL-Server-Master-Class.com- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. April 2015 10:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 24. April 2015 10:32
-
Hallo Thorsten,
optional bzw. zusätzlich könntest Du auch die integrierten Funktionen Performance, Snapshots, Caching (Reporting Services), um z.B. bei besonders aufwendigen Reports nur einmal täglich ein Snapshot zu erstellen, der beim Abruf des Berichtes ausgeliefert wird, statt ihn jedesmal neu zu rendern.
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. April 2015 10:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 24. April 2015 10:32
Alle Antworten
-
Hallo Thorsten,
das hört sich eigentlich ganz gut an. Wenn die Daten statisch sind und für einen Tag ermittelt werden können, bietet es sich an diese für weitere Verwendungen aufbereitet vorzuhalten.
Zusätzlich würde ich mir noch mal die Queries anschauen und ggf. Indizes ergänzen, oder andere Maßnahmen ergreifen.Falls ihr dann mal Tendenzen auswerten wollt, könnt ihr dies über die historisierten Ergebnisse in den "temporären" Tabellen machen. Diese würde ich also auch eher permanent belassen und für weitere Analysen vorhalten.
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. April 2015 10:56
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 24. April 2015 10:31
-
Wenn eine indizierte Sicht, die prinzipiell dann bequemer wären, aufgrund diverser Bedingungen (hier nachzulesen) nicht funktioniert, ist das durchaus ein Weg.
Abfragen würde ich generell nicht gegen Basis-Tabellen erlauben, somit wäre die Entscheidung welches Objekt gelesen wird, in der sptsprechenden Prozedur oder Sicht verborgen.
Andreas Wolter (Blog | Twitter)
MCSM: Microsoft Certified Solutions Master Data Platform, MCM, MVP
www.SarpedonQualityLab.com | www.SQL-Server-Master-Class.com- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. April 2015 10:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 24. April 2015 10:32
-
Hallo Thorsten,
optional bzw. zusätzlich könntest Du auch die integrierten Funktionen Performance, Snapshots, Caching (Reporting Services), um z.B. bei besonders aufwendigen Reports nur einmal täglich ein Snapshot zu erstellen, der beim Abruf des Berichtes ausgeliefert wird, statt ihn jedesmal neu zu rendern.
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. April 2015 10:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 24. April 2015 10:32