Beetje druk met web dingetjes op dit moment. Wel weer leuke en/of hele leerzame dingetjes. Puntje 1 van aandacht waren de Steenderen.NET queries, waarover zo wat meer uitleg… en onder puntje 2 is Steenderen.NET weer eens druk bezig met het bouwen van een website. Leuk? Zeker weten!
OK, de querietjes van Steenderen.NET, het query-balletje begon afgelopen weekend te rollen toen ik het ongezouten commentaar in het gastenboek te verwerken kreeg waarin het statement werd gemaakt dat Steenderen.NET nogal aan de trage kant was. En ik kan je zeggen, Steenderen.NET was nogal aan de trage kant. How come? Door een ongelooflijke hoeveelheid data dat continue heen-en-weer gepompt werd. How come? Door stompzinnig programmeren door ondergetekende.
Inmiddels zijn er een hele hoop querietjes om geprogrammeerd. Één van de belangrijkste SQL woordjes hierbij was LIMIT. Zo simpel, leg een limiet op de hoeveelheid data die je binnenhaalt. Dus bijvoorbeeld in plaats van alle cd’s uit de cd-kast op te vragen, om er hiervan maar ééntje te laten zien, vragen we er nu ook maar echt ééntje op. Zo simpel…
Toch blijkt dat nog lang niet altijd even simpel te zijn, want hoe doe je dat nou bijvoorbeeld als je door de data heen wil kunnen klikken, zoals bijvoorbeeld in de cd-kast. Probleem waar je dan tegen aan loopt, is dat je wil weten hoeveel cd’s er in totaal in de cd-kast zijn geplaatst, en als je eenmaal een beetje aan het doorklikken bent geweest, hoeveel cd’s er voor je huidige pagina komen en hoeveel cd’s erna komen.
Oplossing bleek niet eens zo heel erg ingewikkeld. Om te beginnen doen we niet langer een SELECT * FROM… waarbij we dus alle cd informatie ophalen, maar beginnen we met een SELECT ID FROM… groot voordeel hiervan is, is dat je dan alleen een grote lijst met id nummertjes ophaalt. Verschil is dat het opvragen van alles minimaal 1 seconde duurt (en dat is best vlot nog), maar het opvragen van alleen de id’s slecht 0.05 seconde duurt.
Vervolgens kunnen we in de lijst van id’s zoeken van welke id’s we precies alle details willen ophalen om weer te geven. Dat duurt vervolgens slechts zo’n 0.40 seconde. Totale tijd om de database lastig te vallen is dus ongeveer een halve seconde. Dat is 100% tijdswinst, dat een aantal keer per pagina…
Ik zie nog wel een aantal kleine mogelijkheden om e.e.a. te versnellen, maar dat gaat geen hele grote winst meer opleveren…
Verder ben ik weer eens bezig met het bouwen van een website. Blijft toch altijd heel erg leuk om te doen. Binnenkort moet www.bureaumolag.nl het levenslicht gaan zien!