Ik heb momenteel een tabel waarin bepaalde gegevens van alle page views van een web-site worden opgeslagen. Er wordt niet alleen per pagina een record toegevoegd, maar ook per afbeelding. Het ophalen van een pagina, kan er dus voor zorgen dat er meerdere records toegevoegd worden.
Verder heb heb ik een tabel met de gegevens (start_ip, end_ip, country_name) van +/- 47.000 ip ranges. Ik probeer een query te maken die de statistieken ophaalt, maar met landnaam (uit de ip range tabel) ipv alleen het ip adres.
Dit is de query:
Het werkt wel, maar helaas werkt het heel traag. Als ik het limiet zet op 10, dan duurt het al 2.4 seconden. Momenteel bevat de page-view tabel +/ 50.000 records en het is de bedoeling dat dit via een web-pagina opgevraagd kan worden. Met deze snelheid zal dat dus niet lukken.
De start en eind velden hebben beide een index, dus daar ligt het helaas niet aan. Ik neem aan dat de query zo traag is omdat er op 2 velden vergeleken wordt, maar ik ik heb geen idee wat je hier aan kan doen?
Verder heb ik nog de between statement geprobeerd, maar daar wordt de query nog trager van.
Heeft er iemand misschien een idee hoe ik de query sneller kan maken, of is dit gewoon onmogelijk? Ik heb uiteraard hier en op google gezocht, maar ik heb helaas niks gevonden.
Het is trouwens wel mogelijk om de namen van de landen bij de page-views al toe te voegen, maar ik ben dan bang dat dit het ophalen van pagina's misschien kan vertragen. En ik ben gewoon benieuwd of ik deze query sneller kan maken
Verder heb heb ik een tabel met de gegevens (start_ip, end_ip, country_name) van +/- 47.000 ip ranges. Ik probeer een query te maken die de statistieken ophaalt, maar met landnaam (uit de ip range tabel) ipv alleen het ip adres.
Dit is de query:
code:
1
2
3
| SELECT ip.country_name FROM ip_ranges ip, statistics stat WHERE ip.start_ip <= stats.ip_address AND stats.ip_address <= ip.end_ip |
Het werkt wel, maar helaas werkt het heel traag. Als ik het limiet zet op 10, dan duurt het al 2.4 seconden. Momenteel bevat de page-view tabel +/ 50.000 records en het is de bedoeling dat dit via een web-pagina opgevraagd kan worden. Met deze snelheid zal dat dus niet lukken.
De start en eind velden hebben beide een index, dus daar ligt het helaas niet aan. Ik neem aan dat de query zo traag is omdat er op 2 velden vergeleken wordt, maar ik ik heb geen idee wat je hier aan kan doen?
Verder heb ik nog de between statement geprobeerd, maar daar wordt de query nog trager van.
Heeft er iemand misschien een idee hoe ik de query sneller kan maken, of is dit gewoon onmogelijk? Ik heb uiteraard hier en op google gezocht, maar ik heb helaas niks gevonden.
Het is trouwens wel mogelijk om de namen van de landen bij de page-views al toe te voegen, maar ik ben dan bang dat dit het ophalen van pagina's misschien kan vertragen. En ik ben gewoon benieuwd of ik deze query sneller kan maken