Avatar billede dotnewbi Juniormester
14. august 2012 - 14:34 Der er 5 kommentarer og
2 løsninger

Performance issues ved +5 mio rows

Hej Eksperter,

Jeg har en Database tabel som indholder +5 mio. produkter og hvis jeg f.eks vil hente dem ud i ahphabetisk række følge tager det over 50 sek hvis jeg bruger en query som denne:

DECLARE @rowsperpage INT
DECLARE @start INT
SET @start = 0
SET @rowsperpage = 50

SELECT * FROM
(
SELECT row_number() OVER ( ORDER BY ProductName DESC) AS rownum, Id, CallId, ProductName
FROM  products ) AS A
WHERE A.rownum BETWEEN (@start) AND (@start + @rowsperpage)

men hvis jeg ændre "ORDER BY productName" til i stedet for at bruge 'ORDER BY Id' hvor Id er primary key så tager det samme kald 31 ms hvordan kan det være og hvordan kan jeg optimere databasen/tabelen til at kunne reager lige så hurtigt på de andre felter.

Det skal lige siges at jeg ikke er specielt stærk i database strukture
Avatar billede Syska Mester
14. august 2012 - 14:41 #1
Opret et index på productName, så brude det tage ca. ligeså kort/lang tid ...

mvh
Avatar billede dotnewbi Juniormester
14. august 2012 - 14:47 #2
Hvordan opretter man et index
Avatar billede Syska Mester
14. august 2012 - 14:54 #3
CREATE INDEX IX_ProductVendor_VendorID
    ON Purchasing.ProductVendor (BusinessEntityID);
GO

dvs dit bliver nok noget ala:

CREATE INDEX IX_Products_ProductName
    ON [db].[Products] (ProductName);
GO
Avatar billede dotnewbi Juniormester
14. august 2012 - 15:02 #4
Jeg har lige fundet ud af det :) så smid et svar!
Avatar billede Syska Mester
14. august 2012 - 15:06 #5
Hvad kom execution time ned på?

og svar.
Avatar billede Syska Mester
14. august 2012 - 15:07 #6
og svar.
Avatar billede dotnewbi Juniormester
15. august 2012 - 20:14 #7
den er nu 42 ms
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester