Wir werden immer wieder nach „Abfrageperformance“ gefragt. Man studiert Ausführungspläne und I/O-Statistiken, um die Treiber zu identifizieren. Das Lesen und Analysieren der Ausführungspläne ist inzwischen recht übersichtlich im SQL Server Management Studio möglich. Bei den I/O-Statistiken sieht es leider etwas anders aus.
Wir verwenden für das Beispiel die Foodmart-Datenbank und setzen folgendes Statement ab:
SET STATISTICS IO ON;
SELECT [product_id]
,[date_id]
,[customer_id]
,[promotion_id]
,[store_id]
,[store_sales]
,[store_cost]
,[unit_sales]
,[TimeUtilityID]
,[CumulationID]
,[ValueTypeID]
FROM [FoodMart].[dbo].[V_sales_fact_2007]
union all
SELECT [product_id]
,[date_id]
,[customer_id]
,[promotion_id]
,[store_id]
,[store_sales]
,[store_cost]
,[unit_sales]
,[TimeUtilityID]
,[CumulationID]
,[ValueTypeID]
FROM [FoodMart].[dbo].[V_sales_fact_2008]
union all
SELECT [product_id]
,[date_id]
,[customer_id]
,[promotion_id]
,[store_id]
,[store_sales]
,[store_cost]
,[unit_sales]
,[TimeUtilityID]
,[CumulationID]
,[ValueTypeID]
FROM [FoodMart].[dbo].[V_sales_fact_dec_2008]
SET STATISTICS IO OFF;
Dabei ergibt sich ein Ergebnis von etwa 260.000 Zeilen.
Die Ausgaben für die I/O-Statistik sind nur in Textform vorhanden und daher sehr schwer „auf einen Blick“ zu lesen. Es gibt eine Webseite, die uns das Lesen sehr erleichtern kann: http://www.statisticsparser.com
Man übernimmt einfach den Meldungstext in das vorgesehene Feld und drückt auf den Button „Parse“.
Die I/O-Statistik erscheint übersichtlich in einem gut lesbaren Format. Ein kleiner Nachteil sei noch erwähnt: Im jetzigen Stadium der Entwicklung „versteht“ der Parser nur Ausgaben der englischen und wohl auch der spanischen Meldungen des SQL Server Management Studios.