Ik heb de volgende tabellen:
In de eerste tabel staan 24 kleuren
In de 2e tabel worden producten aan deze kleuren te gekoppeld. (+/- 9000 records)
Nu wil ik van een product de beschikbare kleuren opvragen, in een totaaloverzicht van alle kleuren.
Dat doe ik met de volgende query:
Voor de wildcard wordt uiteraard het product_id ingevuld.
als p.color_id geen NULL geeft is de kleur blijkbaar beschikbaar.
Deze query werkt prima, maar doet er 5 seconden over om uit te voeren..
Als ik eerst de beschikbare kleuren van een produkt opvraag, en tijdelijk in een array gooi, en daarna alle kleuren opvraag in een 2e query gaat alles wel snel.
Wat doe ik fout?
code:
1
2
3
4
5
6
7
8
9
10
11
| Tabel colors: +----------+------+ | color_id | name | +----------+------+ Tabel product_colors: +------------+----------+ | product_id | color_id | +------------+----------+ |
In de eerste tabel staan 24 kleuren
In de 2e tabel worden producten aan deze kleuren te gekoppeld. (+/- 9000 records)
Nu wil ik van een product de beschikbare kleuren opvragen, in een totaaloverzicht van alle kleuren.
Dat doe ik met de volgende query:
code:
1
2
3
4
| SELECT c.color_id, c.name, p.color_id FROM colors c LEFT JOIN product_colors p ON c.color_id = p.color_id AND p.product_id = ? GROUP BY c.color_id ORDER BY c.color_id |
Voor de wildcard wordt uiteraard het product_id ingevuld.
als p.color_id geen NULL geeft is de kleur blijkbaar beschikbaar.
Deze query werkt prima, maar doet er 5 seconden over om uit te voeren..
Als ik eerst de beschikbare kleuren van een produkt opvraag, en tijdelijk in een array gooi, en daarna alle kleuren opvraag in een 2e query gaat alles wel snel.
Wat doe ik fout?