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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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