Spätestens seitdem das neueste kummulative Update-Package 4 für den SQL-Server-2005 erschien, sollte Microsoft wissen, welche Bugs damit behoben wurden. Offenbar geht es denen auch nicht anders als den meisten Projekten, die ich kennen lernte: Ab einem gewissen Zeitdruck wird die Dokumentation auf später verschoben.
Der Artikel mit dem länglichen Namen "FIX: When you run a stored procedure that uses some views in SQL Server 2005, the performance is slow compared to SQL Server 2000 if the views use the JOIN operator and contain subqueries" beschreibt ein vergleichsweise normales Problem von dem wir mit Sicherheit auch betroffen sind: In einer Prozedur wird auf eine View zugegriffen, die wenigstens einen JOIN und eine Subquery enthält.
When you run a stored procedure that uses some views that contain subqueries in Microsoft SQL Server 2005, the performance is slower compared to Microsoft SQL Server 2000. This problem occurs if the views use the JOIN operator.
[…] This problem occurs because SQL Server 2005 generates a poor execution plan for this stored procedure. In the execution plan that SQL Server 2005 generates, SQL Server 2005 uses a Table Spool operator. The Table Spool operator returns many rows. Therefore, SQL Server 2005 takes longer to process these rows. However, in the execution plan that SQL Server 2000 generates, SQL Server 2000 uses a Filter operator. The Filter operator returns fewer rows.
Blöderweise kann ich mich genau erinnern, gerade gestern eine Prozedur gesehen zu haben auf die genau das Szenario zutraf. Was haben wir gestern und vorgestern die Performance analysiert! Komischerweise wurde bei uns nicht immer ein Table-Spool durchgeführt. Unsere Abhilfe war in die Prozedur ein paar Update-Statistics aufzunehmen. Vielleicht hätte es auch gereicht einfach den Update-Package zu installieren? Oder es war noch ein anderes Problem?
"Leider" komme ich erst wieder am Dienstag ins Büro… Aber dann schaue ich da noch mal genau drauf.