Ik probeer in één query een JOIN en een COUNT uit te voeren. Daarbij gaat het om twee (grote)tabellen, die middels een item_id gekoppeld kunnen worden. Er is in beide tabellen een index gelegd op item_id. Wanneer ik alleen de JOIN uitvoer gebeurt dit binnen enkele milliseconden, probleem treedt echter op wanneer ik over het resultaat een GROUP BY uitvoer om de COUNT te kunnen bepalen: dit duurt vaak zo'n minuut. Het lijkt erop alsof MySQL (versie 4.1.12) het resultaat van de JOIN in een tijdelijke tabel wegschrijft, waarna er voor het uitvoeren van de GROUP BY geen indexen meer bekend zijn. Weet iemand hoe ik de query of de tabelstructuur moet optimaliseren?
Dit zijn de tabellen die ik gebruik:
tblCatsPerItem (item_id [index], cat_id) - ongeveer 400.000 records
tblDetailsPerItem (item_id [index], detailtype_id) - ongeveer 4.500.000 records
En dit is de query:
Dit zijn de tabellen die ik gebruik:
tblCatsPerItem (item_id [index], cat_id) - ongeveer 400.000 records
tblDetailsPerItem (item_id [index], detailtype_id) - ongeveer 4.500.000 records
En dit is de query:
SQL:
1
2
3
4
5
6
| SELECT detailtype_id, COUNT(detailtype_id) FROM tblCatsPerItem, tblDetailsPerItem WHERE tblCatsPerItem.item_id = tblDetailsPerItem.item_id AND cat_id = 1 AND detailtype_id IN (1,2,3,4,5,6) GROUP BY detailtype_id |