Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[ASP] Records-tabel - Hoe kan ik de snelheid verbeteren?

Anoniem
Annie
8 antwoorden
  • Ik heb een .asp pagina met een tabel.

    Deze tabel heeft een vaste titel <tr>
    Deze tabel heeft een variabele records <tr>

    D.m.v. een loop haalt de pagina alle benodigde records uit de database.
    Nu staan er 300 records in en het duurt ongeveer 15 sec. voordat ie de tabel met gegevens laat zien.

    Ik heb een kabelverbinding.
    Database is Access2000

    Hoe kan ik dit proces optimaliseren, zodat de gegevens sneller getoond worden?
  • Voer je 300 keer een query uit of haal je een recordset op en loop je daar door heen? En wat doe je verder met deze gegevens?

    M.a.w. met deze summiere informatie valt er niet veel zinnigs te zeggen over de oorzaken.
    Wat heb je overigens zelf al geprobeerd? Op internet moet genoeg te vinden zijn over performance tips lijkt me.
  • Hij voert eerst een query uit, dan bouwt ie een recordset op en die wordt d.m.v. een loop een de table geplaatst.
  • Als je veel records hebt kun je beter niet alle records tegelijk laden in een recordset. Doormiddel van een link zou je verder kunnen bladeren door de records.
  • Een relatief onbekende methode om te werken met recordsets zijn overigens de GetRows() en GetString() methods van het recordset object.
    bijv:

    [code:1:6997eef45a]
    Set oRs = oCon.Execute("SELECT foo, bar FROM tabel")
    a_mItems = oRs.GetRows()
    oRs.Close
    set oRs = Nothing

    ' hierna kan je met een "for next" loop-en door je array met gegevens
    ' ipv loop-en door je recordset
    [/code:1:6997eef45a]

    Deze methods zijn sneller dan rechtstreeks werken met de recordset.

    Bij te veel gegevens is het inderdaad aan te raden eens te gaan kijken naar de mogelijkheid om de gegevens over meerdere pagina's te verdelen (zoek maar eens op "recordset paging" voor verschillende methodes waarop je dat kan aanpakken).
  • Kent iemand het flush commando?

    Hoe kan ik deze toepassen op een simpele query die alle records in een table plaatst:

    [code:1:4d9bf84f26]Set con = Server.CreateObject("ADODB.Connection")
    con.Open "DSN"

    sql = "SELECT * FROM table"
    set Rs = con.Execute(sql)

    WHILE NOT Rs.EOF
    %>
    <Table>
    <%
    WEND
    %>[/code:1:4d9bf84f26]

    Als het goed is wacht ie dan niet totdat alle rijen zijn ingeladen, maar laat ze direct zien.
  • [quote:a10ea8f598="Johant"]Kent iemand het flush commando?[/quote:a10ea8f598]
    [i:a10ea8f598]flush[/i:a10ea8f598] als in: [i:a10ea8f598]response.flush[/i:a10ea8f598]? Ja, die ken ik.

    [quote:a10ea8f598="Johant"]Hoe kan ik deze toepassen op een simpele query die alle records in een table plaatst:
    [/quote:a10ea8f598]

    bijvoorbeeld zoiets:
    [code:1:a10ea8f598]
    response.buffer = true

    Set con = Server.CreateObject("ADODB.Connection")
    con.Open "DSN"

    sql = "SELECT * FROM table"
    set Rs = con.Execute(sql)

    WHILE NOT Rs.EOF
    response.write "bla"
    response.write "bla"
    response.flush
    rs.movenext
    WEND
    %>[/code:1:a10ea8f598]

    [quote:a10ea8f598="Johant"]Als het goed is wacht ie dan niet totdat alle rijen zijn ingeladen, maar laat ze direct zien.[/quote:a10ea8f598]
    ja en nee, de opgebouwde buffer wordt wel doorgestuurd naar de client, maar de user agent (bijv: IE) zal de toegestroomde content ook moeten parsen en dat is bij mijn weten niet te beinvloeden. Bijvoorbeeld NS4 stond er altijd om bekend een pagina met tables pas te tonen wanneer de volledige table binnen was.
  • Inderdaad, hij flushed 'm wel, maar laat de tabel pas zien als ie volledig is ingeladen.

    Gaan we maar naar een andere oplossing zoeken.

    Thanx anyway.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.