Hallo,

Ik zit met het volgende probleem.

Ik heb een pagina met een tabel waarin verkoop orders staan.
Boven het tabel zit een zoekfilter en dit zoekfilter stuurt via ajax de ingevulde velden naar de server, en het resultaat wordt weer in de tabel geplaatst.
Op de server word dan een zware query uitgevoerd met 7 joins.

Wanneer de zoekfunctie niet word gebruikt dan staan de orders binnen 3 seconden in de tabel. (50 rows)

Maar wanneer de zoekfunctie wel wordt gebruik dan duurt het 10 seconden of langer en bij gebruik van internet explorer lijkt lijkt de browser vast te lopen(Dit lijkt op een render probleem).
Dit gebeurd meestal als het gaat om meer dan 100 rows.

Heeft iemand een idee hoe ik dit kan oplossen? Ik zat zelf te denken om de resultaten op te splitsen in pagina's maar het probleem is dan dat ik 2 x die zware query moet gaan draaien. Omdat je eerst het aantal rows moet weten om het aantal pagina's te bepalen. En vervolgens moet de query nogmaals gedraaid worden om de resultaten op te halen.

Alvast bedankt.

Met vriendelijke groet,

Patrick
Beste Patrick, meerdere mensen zoek een oplossing op het forum voor hun problemen. Dus bij deze het verzoek om je titel aan te passen naar iets wat je probleem uitlegt. Dit kan door je bericht te wijzigen.
Wat gebruik je voor de zoekfunctie? En heb je indexen staan op de velden waarop je zoekt?

Voor het ophalen van het aantal rijen kan je ook
[code lang=sql]
SELECT COUNT(*) FROM ..........
[/code]
En dan op de plaats van de puntjes de rest van de query waarmee je de daadwerkelijke gegevens ophaalt.
Ger Bedankt voor je reactie.
Aan COUNT had ik nog niet gedacht.. Bedankt.

Ik heb de query sneller kunnen maken. In Chrome en Firefox word alles goed ingeladen.
Alleen Internet Explorer loopt vast wanneer er veel rijen aan de tabel worden toegevoegd.
Hoe leeg je de tabel en vul je hem weer?
IE kan er niet zo goed tegen als je de innerHTML van de tabel(of tbody) zelf aanpast, dan kan je beter een div er omheen zetten en daar de gehele tabel inladen.
Er staan meerdere tbody's die verwijder ik op deze manier.
$('#sales_table').find('tbody').remove();

En vul de tabel weer met tbody's
$('#sales_table').find('thead').after(data);
Dat kan iets sneller
[code lang=js]
$("#sales_table tbody").remove();
// voor het vullen
$("#sales_table thead").after(data);
[/code]
Maar nogmaals, in IE kan je beter de gehele tabel als html inladen.
Ger nogmaals dank.

Ik ga eens kijken wat er gebeurd als ik de hele tabel doe.

Bedankt.

Reageren