MySQL: Query met 4200 rijen -> Te traag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Lorre Mertens

Lorre Mertens

10/04/2016 12:10:11
Quote Anchor link
Beste forumleden,

Ik gebruik een SQL query waarbij een hele tabel wordt opgevraagd.
Dus gewoon SELECT * FROM map.
Ik krijg zo'n 4200 rijen terug, wat nogal lang duurt.

Die rijen worden dan weergegeven op een webpagina na omzetting in XML.

Is er een manier om ervoor te zorgen dat de rijen die niet gewijzigd zijn te 'cachen' en de andere die wél gewijzigd zijn te updaten?

Groetjes en bedankt
 
PHP hulp

PHP hulp

16/11/2024 02:31:42
 
- Ariën  -
Beheerder

- Ariën -

10/04/2016 12:33:43
Quote Anchor link
Ik kan me niet indenken dat een simpele SELECT-querie met ruim 4.000 records lang duurt. Zit de traagheid niet in het renderen van de HTML-pagina?
 
Lorre Mertens

Lorre Mertens

10/04/2016 12:55:25
Quote Anchor link
Dag Ariën, bedankt.
Je hebt gelijk als ik de query in PHPMyAdmin doe duurt het maar een klein secondje.

De gegenereerde XML pagina is wel een megabyte groot en het duurt meer dan 2 seconden om ze te genereren, terwijl ik lokaal werk (127.0.0.1).

Is er een manier om alleen de rijen die geüpdatet zijn te herladen en de rest te 'cachen'?
 
Geen Idee

Geen Idee

10/04/2016 16:00:59
Quote Anchor link
Je kunt bijhouden wanneer de xml is gemaakt en wanneer de aanmaakdatum van de nieuwe records later ligt dan de laatste keer dat de xml is bijgewerkt die records aan de xml toevoegen.

Maar wat voor script gebruik je voor omzetten van query resutlaat naar xml?
 
Thomas van den Heuvel

Thomas van den Heuvel

10/04/2016 16:19:13
Quote Anchor link
Inderdaad, om hier antwoord op te kunnen geven moeten we meer weten over:
- de structuur en inhoud van je data
- de code die de XML bakt

Enne, een XML bestand van één megabyte? Dat is een hoop tekst. En wellicht een beetje zwaar voor een browser? Dit bestand cachen lijkt een goed idee, zodat deze niet elke keer opnieuw gegenereerd hoeft te worden. Een beter idee is wellicht nog kijken of je de bestandsgrootte (flink) kunt terugdringen.
 
Lorre Mertens

Lorre Mertens

10/04/2016 16:45:24
Quote Anchor link
Ik heb de bestandsgrootte kunnen verkleinen naar 280 kb.
Ik gebruik Symfony om een XML response te genereren. Dit is mijn controller.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public function geoxmlAction() {
        $em = $this->getDoctrine()->getManager();
        $repository = $em->getRepository('MapBundle:Map');
        
        $markers = $repository->findAll();
        
        $response = new Response($this->renderView('MapBundle:Default:geoxml.xml.twig', array(
                    'markers' => $markers)));
        $response->headers->set('Content-Type', 'application/xml; charset=utf-8');
        $date = new DateTime();
        $date->modify('+6000 seconds');
        $response->setExpires($date);
        return $response;
    }


Dat geeft een XML bestand zoals dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<ms>
<m id="1" owner="Laurens" lat="45" lng="-111" faction="f"/>
<m id="2" owner="Lorenzo" lat="47" lng="-121" faction="e"/>
<m id="4" owner="local tribes" lat="83" lng="-85" faction="u"/>
<m id="5" owner="local tribes" lat="83" lng="-83" faction="u"/>
</ms>


Maar dan 4200 lijnen.

Het twig bestand ziet er zo uit;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<ms>
{% for marker in markers %}
<m id="{{ marker.id }}" owner="{% if marker.owner %}{{ marker.owner }}{%else%}local tribes{%endif%}" lat="{{ marker.lat }}" lng="{{ marker.lng }}" faction="{{ marker.faction }}" />
{% endfor %}
</ms>


Het probleem is dat ik ten allen tijde een geüpdate versie moet krijgen met alle 4200 rows.
Gewijzigd op 10/04/2016 16:54:34 door Lorre Mertens
 
Thomas van den Heuvel

Thomas van den Heuvel

10/04/2016 22:36:47
Quote Anchor link
Al overwogen om een ander format te gebruiken? Bijvoorbeeld JSON?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.