Ik heb een database met 3 tabellen.
1 - forums (id, omschrijving);
2 - forumtopics (id, id_forums, id_user, titel, tekst, ind_locked, timestamp);
3 - forumposts (id, id_topics, id_user, tekst, timestamp);
Kardinaliteit tabel 1: 7
Kardinaliteit tabel 2: 2000
Kardinaliteit tabel 3: 35523
Ik wil nu een topic overzicht genereren. Mijn query:
Het probleem is dat deze zeer en zeer traag is, als ik de GROUP BY weg haal, dan is hij super snel, alleen krijg ik dan een aantal de zelfde topics te zien (dit aantal is afhankelijk van het aantal replies)
forumtopics.id is een primaire sleutel en tevens INDEX
forumposts.id is een primaire sleutel en tevens INDEX
Moet ik mijn database beter optimaliseren?, zo ja hoe dan? zijn mijn indices wel goed? of ligt het aan de qeury?
1 - forums (id, omschrijving);
2 - forumtopics (id, id_forums, id_user, titel, tekst, ind_locked, timestamp);
3 - forumposts (id, id_topics, id_user, tekst, timestamp);
Kardinaliteit tabel 1: 7
Kardinaliteit tabel 2: 2000
Kardinaliteit tabel 3: 35523
Ik wil nu een topic overzicht genereren. Mijn query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| SELECT
forumtopics.*,
count(forumposts.id),
max(forumposts.timestamp)
FROM
forumtopics
LEFT JOIN
forumposts
ON
forumtopics.id = forumposts.id_topics
WHERE
forumtopics.id_forums = '$forum_id'
GROUP BY
forumtopics.id
LIMIT
0,15 |
Het probleem is dat deze zeer en zeer traag is, als ik de GROUP BY weg haal, dan is hij super snel, alleen krijg ik dan een aantal de zelfde topics te zien (dit aantal is afhankelijk van het aantal replies)
forumtopics.id is een primaire sleutel en tevens INDEX
forumposts.id is een primaire sleutel en tevens INDEX
Moet ik mijn database beter optimaliseren?, zo ja hoe dan? zijn mijn indices wel goed? of ligt het aan de qeury?