Untitled
unknown
sqlserver
a year ago
1.4 kB
0
Indexable
Never
-- Lekérdezés: Az 1998-ban legtöbb alkalommal megrendelt termék árát (UnitPrice) növeli 1 dollárral UPDATE dbo.Products SET UnitPrice = UnitPrice + 1 WHERE ProductID IN ( SELECT TOP 1 WITH TIES od.ProductID FROM [Order Details] od INNER JOIN Orders o ON od.OrderID = o.OrderID WHERE YEAR(o.OrderDate) = 1998 ORDER BY COUNT(*) OVER (PARTITION BY od.ProductID) DESC ); -- Mérjük a futásidőt DECLARE @StartTime DATETIME; DECLARE @EndTime DATETIME; DECLARE @Duration INT; SET @StartTime = GETDATE(); -- Futtatjuk a lekérdezést 1000-szer DECLARE @i INT = 1; WHILE @i <= 1000 BEGIN -- Futtassuk itt a lekérdezést -- A lekérdezés, amit itt futtat, a fentiekben található UPDATE parancs SET @i = @i + 1; END SET @EndTime = GETDATE(); SET @Duration = DATEDIFF(MILLISECOND, @StartTime, @EndTime); PRINT 'Futási idő (1000-szer futtatva): ' + CAST(@Duration AS NVARCHAR(10)) + ' ms'; -- Automatizált eszközökkel terveztessük az indexeket -- A Database Engine Tuning Advisor (DTA) segítségével tervezzük meg az indexeket -- Az eredményeket tároljuk el, és értékeljük ki a teljesítményjavulást -- Visszaállítjuk a kiinduló állapotot -- Töröljük az elkészített indexeket DROP INDEX idx_Products_UnitPrice ON dbo.Products; DROP INDEX idx_OrderDetails_ProductID_Quantity ON dbo.[Order Details]; DROP INDEX idx_Orders_OrderDate ON dbo.Orders;