Im SQL Server Magazine hatte ich gerade angefangen den Artikel "Optimizing TOP N Per Group Queries" von Itzik Ben-Gan zu lesen. Dann stellte ich fest, dass er auch online frei verfügbar und in voller Länge bereit steht. Daher ist das meine heutige Lese-Empfehlung.

In dem Artikel beschäftigt er sich wieder mit einem kniffeligen Thema. Anders als in früheren Ausgaben wird das Thema aber abschließend behandelt. Das finde ich richtig gut. Es kam leider auch schon vor, dass er das gleiche Thema auf drei Ausgaben aufteilte. Das bedeutete konkret 3 Monate lang immer das gleiche mit anderen Lösungen und am Ende wusste man dann die Beste der drei. Das hat mich schon etwas genervt.

Als Lösungen untersucht Itzik:

  • ROW_NUMBER zur Ermittlung der "Gruppenbesten"
  • APPLY zur Ermittlung der besten pro Gruppe
  • String-Concatenation zur Ermittlung des Besten pro Gruppe (sehr kreativ)

Hier kommt auch recht deutlich raus, dass es selten echte Daumenregeln gibt, sondern immer die konkrete Situation berücksichtigen muss: Welche Indexe sind vorhanden, wie sehen die Daten aus, …