Optimering af SQL sætning
Er der nogen der har nogle forslag til hvordan man kunne performance-optimere disse SQL sætninger i stored procedures, så de ikke sluger så meget cpu når der er rush på? Vil helst gerne af med de 2 interne select-sætninger hvis det kan lade sig gøre... eller i det mindste kunne genbruge dem på en eller anden måde, da de er tæt på at være ens.Den første:
SELECT @iNumChallWon=count(ChallengeID)
FROM Challenges
WHERE ID2Accept = 1
AND EndDate < getdate()
AND (ID1 = @CarId
AND ID1Votes > ID2Votes)
OR (ID2 = @CarId
AND ID2Votes > ID1Votes)
AND challenges.ID1 IN
(SELECT gallerier.ID
FROM gallerier
WHERE gallerier.aktiv = 1
AND gallerier.acceptVote = 1)
AND challenges.ID2 IN
(SELECT gallerier.ID
FROM gallerier
WHERE gallerier.aktiv = 1
AND gallerier.acceptVote = 1)
Den anden:
SELECT @iNumChallWon=count(ChallengeID)
FROM Challenges
WHERE ID2Accept = 1
AND EndDate < getdate()
AND (
(ID1Votes > ID2Votes
AND challenges.ID1 IN (SELECT gallerier.ID FROM gallerier WHERE gallerier.aktiv = 1 AND acceptVote = 1 AND userID = @UserSeesion)
AND challenges.ID2 IN (SELECT gallerier.ID FROM gallerier WHERE gallerier.aktiv = 1 AND acceptVote = 1))
OR
(ID2Votes > ID1Votes
AND challenges.ID2 IN (SELECT gallerier.ID FROM gallerier WHERE gallerier.aktiv = 1 AND acceptVote = 1 AND userID = @UserSeesion)
AND challenges.ID1 IN (SELECT gallerier.ID FROM gallerier WHERE gallerier.aktiv = 1 AND acceptVote = 1))
)
