07. marts 2007 - 21:43Der er
10 kommentarer og 1 løsning
Hvorfor tager "SELECT TOP 1" længere tid end "SELECT"?
Hey,
Jeg har en SP som jeg er ved at optimere.
SELECT P1.PictureId AS PictureId1, P2.PictureId AS PictureId2 FROM gss_Pictures P1 INNER JOIN gss_Pictures P2 ON P1.[Size] = P2.[Size] AND P1.PictureId <> P2.PictureId WHERE P1.PictureId NOT IN (SELECT FK_PictureId1 FROM gss_PicturesSameSize WHERE FK_PictureId2 = P2.PictureId) AND P1.PictureId NOT IN (SELECT FK_PictureId2 FROM gss_PicturesSameSize WHERE FK_PictureId1 = P1.PictureId)
Den behøver ikke give super meget mening - mit spørgsmål er, hvorfor tager "SELECT TOP 1 .." mange gange længere tid end "SELECT .." ?
Ovenstående sql returnerer 2500 rækker, og det tager omkring 2 sekunder. Jeg skal dog kun bruge den første, så jeg indsætter TOP 1 efter SELECT.
Nu tager min sp pludselig 15+ sekunder.. why? Er der noget grundlæggende om TOP jeg ikke er klar over, eller er min sp bare generelt fucked up rent performancemæssigt?
det kan jeg ikke - mine PictureId's er guids. men det er nu heller ikke fordi jeg VIL have TOP 1 ud, det virker bare mest "rigtigt".. jeg undrede mig bare over at den blev 10 gange langsommere, blot fordi jeg tilføjede TOP 1.
for det forste forstår jeg ikke at det skulle være hurtigere at hente 2000+ rækker frem for 1 række. for det andet forstår jeg ikke at det tager 10+ gange længere tid med top 1..
det er også hurtigt med top 5.. men f.eks ved top 3 der går det amok og tager laaaang tid.
IDENT_CURRENT hjælper heller ikke. hvis jeg stadig har top 1 på, tager det lige lang tid, desuden er værdien af IDENT_CURRENT ('P1.PictureId') bare null..
du må gerne få points for din response (exp.dk er lidt død for tiden), men forstår stadig ikke at det skulle gøre en sp langsommere at have top 1 på.
lad spørgsmålet stå åben til i morgen:) så kan vi afslutte det der. jeg er enig at det virker lidt ulogisk!
forresten.. ærgeligt at IDENT_CURRENT ikke fungerede.. ville ellers mene den skulle hente sidste opretterede guid for den enkelte tabel, men det har sikkert noget at gøre med hvordan man opretter sine guids.
men som sagt.. lad spørgsmålet stå til i morgen:) jeg vil gerne lige have mulighed for at finde en forklaring nemlig.
jeg fandt aldrig ud af hvorfor der skulle være dette kæmpe performance hit ved TOP 1, men hvis du vil have points så har du et par dage til at lægge et svar. er ved at lukke gamle spørgsmål.
kan godt være at det har noget at gøre med manglende index at gøre.. det underlige var bare at en top 5 var fin nok, men top 1 tog 15+ sekunder.
anyway, tak for input :)
Synes godt om
Ny brugerNybegynder
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.