Avatar billede melted Nybegynder
12. januar 2005 - 19:52 Der er 4 kommentarer

Optimering af SQL-sætning

Har lige en SQL-sætning som jeg ville høre om nogen havde forslag til hvordan jeg kunne performance-optimere (Helst lidt hurtigt)???

SELECT count(MSG_ID) AS NO_TOPIC,
(SELECT COUNT (REP_ID) FROM [dbo].REPLIES WHERE REPLIES.FOR_ID = @iForumID) AS NO_POST,
(SELECT MAX (MSG_DATETIME) FROM [dbo].MESSAGES WHERE MESSAGES.FOR_ID = @iForumID) AS LAST_MSG_DATE,
(SELECT MAX (REP_DATETIME)  FROM [dbo].REPLIES  WHERE REPLIES.FOR_ID = @iForumID) AS LAST_POST

FROM [dbo].MESSAGES

WHERE MESSAGES.FOR_ID = @iForumID

GROUP BY MESSAGES.FOR_ID
Avatar billede kjulius Novice
12. januar 2005 - 21:55 #1
Tja, hvad med noget lignende dette:

SELECT
COUNT(DISTINCT M.MSG_ID) AS NO_TOPIC,
COUNT(R.REP_ID) AS NO_POSTS,
MAX(M.MSG_DATETIME) AS LAST_MSG_DATE,
MAX(R.REP_DATETIME) AS LAST_POST
FROM [dbo].MESSAGES AS M
INNER JOIN [dbo].REPLIES AS R
ON M.FOR_ID = R.FOR_ID
WHERE M.FOR_ID = @iForumID
Avatar billede melted Nybegynder
12. januar 2005 - 22:24 #2
Hmm... synes det blev meeeeeget langsommere...
Avatar billede trer Nybegynder
13. januar 2005 - 12:45 #3
Prøv at sætte indeks på alle kolonner du laver aggrering på (MAX og COUNT) samt dem du joiner på.
Avatar billede melted Nybegynder
13. januar 2005 - 15:24 #4
Det er der i forvejen, men det er også ligemeget... har fundet en løsning på det :)
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