Avatar billede driis Nybegynder
19. december 2004 - 19:19 Der er 7 kommentarer og
1 løsning

Hjælp - stored procedure er langsom

Jeg har følgende stored procedure:

CREATE PROCEDURE [dbo].[GetBoard]
(
    @UserID int
)
AS
SELECT B.BoardID,B.UserID,B.FieldCount,F.Position,F.IsScratched,FT.*,P.PriceID
    from tblBoards as B
    join tblFields as F on B.BoardID=F.BoardID
    join tblFieldTypes as FT on F.FieldTypeID=FT.FieldTypeID
    left join tblPrices as P on P.BoardID=B.BoardID   
    Where B.UserID=@UserID
    Order By Position;

GO

Mit problem er at den nu og da timer ud. Den kaldes fra en ASP .NET applikation med connection timeout sat til 30 sekunder.
Tabellen tblFields indeholder omkring ~340.000 rækker men proceduren returnerer sjældent mere end omkring 25 rækker.

Timeouts'ne sker oftest på tidspunkter hvor .NET applikationen har mange brugere online, dvs. at queryet bliver kørt tit. Dog sjældent mere end 15 gange i minuttet.

Hvad kan jeg gøre for at forbedre performance ? Er der noget i min stored procedure, der er ineffektivt ? Burde SQL Server ikke kunne håndtere en tabel med 340.000 rækker ?
Avatar billede arne_v Ekspert
19. december 2004 - 19:26 #1
SQL Server bør kunne klare 340 millioner rækker.

Er der index på:

B.BoardID
F.BoardID
F.FieldTypeID
FT.FieldTypeID
P.BoardID
B.BoardID
B.UserID

?

(primær nøgle har selvfølgelig automatisk)
Avatar billede driis Nybegynder
19. december 2004 - 19:39 #2
B.BoardID og FT.FieldTypeID er primære nøgler, så ja, de er med indeks.
Resten er ikke.

Jeg har ikke meget erfaring eller indsigt i brug af indeks i forbindelse med SQL Server. Ville det være en fordel at bruge indeks på de kolonner, der joines mellem, i dette tilfælde ?
Avatar billede arne_v Ekspert
19. december 2004 - 19:41 #3
JA !
Avatar billede arne_v Ekspert
19. december 2004 - 19:42 #4
Alle felter som er i nærkontakt med et lighedstegn er oplagte kandidater til
et index.
Avatar billede arne_v Ekspert
19. december 2004 - 19:42 #5
Jeg er ret sikker på at hvis du tilføjer index, så vil du se en markant
forbedring af performance.
Avatar billede driis Nybegynder
19. december 2004 - 19:58 #6
Jeg har nu tilføjet index. Det ser umiddelbart ud til at have hjulpet, men jeg holder lige øje med performance henover dagen i morgen, hvor jeg forventer at få mange brugere på applikationen.

Du må gerne lægge et svar.
Avatar billede arne_v Ekspert
19. december 2004 - 20:02 #7
ok
Avatar billede driis Nybegynder
21. december 2004 - 19:28 #8
Tak for hjælpen.
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