Ik ben bezig een site te ontwikkelen (m.b.v. PHP & MySQL) die functionaliteit bevat die enigszins overeen komt met die van BizRate. Bij BizRate is het namelijk mogelijk om zoekopdrachten te verfijnen door items in kolommen bovenaan de resultatenpagina's te klikken. Als je bijvoorbeeld in de categorie digitale camera's zit, is het mogelijk om het aantal resultaten te verkleinen door in de kolom Resolution te kiezen voor camera's met 5 megapixels of meer. De zoekopdracht wordt dan uitgebreidt en de kolom Resolution verdwijnt van de resultatenpagina. Nou is het ook zo dat per verfijning genoteerd staat hoeveel resultaten er nog overblijven wanneer deze verfijning gekozen wordt (door middel van een getalletje tussen haakjes achter de verfijning).
Nou heb ik dit gedrag nagebootst door per verfijning een query uit te voeren. Als een verfijning nul resultaten oplevert wordt deze niet getoond. Dit is echter ontzettend traag, doordat er heel veel queries uitgevoerd moeten worden wanneer de pagina opgebouwd wordt (en de tabel met producten heeft enkele miljoenen records).
Weet iemand hoe dit efficiënt aangepakt moet worden (oftewel: hoe beperk ik het aantal benodigde queries)? Het in één keer voor alle verfijningen bepalen hoeveel resultaten ze opleveren (d.m.v. een of andere mega-query) lijkt me niet te doen...but correct me if I'm wrong!
Nou heb ik dit gedrag nagebootst door per verfijning een query uit te voeren. Als een verfijning nul resultaten oplevert wordt deze niet getoond. Dit is echter ontzettend traag, doordat er heel veel queries uitgevoerd moeten worden wanneer de pagina opgebouwd wordt (en de tabel met producten heeft enkele miljoenen records).
Weet iemand hoe dit efficiënt aangepakt moet worden (oftewel: hoe beperk ik het aantal benodigde queries)? Het in één keer voor alle verfijningen bepalen hoeveel resultaten ze opleveren (d.m.v. een of andere mega-query) lijkt me niet te doen...but correct me if I'm wrong!