✦ Oplossingen · Database (MySQL/MariaDB)

Trage database of query versnellen met indexen

Is je website traag door de database? Zo vind je de trage queries met de slow query log en EXPLAIN, en voeg je de juiste index toe zonder je site te overbelasten.

Waarom gebeurt dit?

Een trage website ligt vaak aan een handvol queries die bij elke paginaweergave een hele tabel doorzoeken. Zolang de tabel klein is, merk je dat niet; bij tienduizenden bestellingen of logregels wel. Een index op de juiste kolom kan zo'n query van seconden naar milliseconden brengen.

Meten gaat voor gokken. De slow query log vertelt welke queries traag zijn, EXPLAIN vertelt waarom.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Zet de slow query log aan

    Log tijdelijk alle queries die langer duren dan bijvoorbeeld één seconde.

    SET GLOBAL slow_query_log = 'ON';
    SET GLOBAL long_query_time = 1;
    SHOW VARIABLES LIKE 'slow_query_log_file';
  2. Vat het log samen

    Met mysqldumpslow zie je welke queries het vaakst en het langst duren.

    mysqldumpslow -s t -t 10 /var/lib/mysql/servernaam-slow.log
  3. Analyseer met EXPLAIN

    Zet EXPLAIN voor de trage query. Zie je type ALL en een groot aantal bij rows, dan wordt de hele tabel doorzocht.

    EXPLAIN SELECT * FROM bestellingen WHERE klant_id = 42 AND status = 'open';
  4. Voeg een passende index toe

    Indexeer de kolommen in WHERE (en eventueel ORDER BY), in de volgorde waarin ze het meest filteren. Op grote tabellen kan dit even duren; doe het buiten drukke uren en na een back-up.

    ALTER TABLE bestellingen ADD INDEX idx_klant_status (klant_id, status);
  5. Vermijd queries die een index niet kunnen gebruiken

    Een functie om de kolom heen (bijvoorbeeld DATE(aangemaakt) = …) of een LIKE die begint met % kan de index niet gebruiken. Schrijf de voorwaarde liever als bereik.

    -- in plaats van WHERE DATE(aangemaakt) = '2026-10-01'
    WHERE aangemaakt >= '2026-10-01' AND aangemaakt < '2026-10-02'

Let op: Meer indexen is niet altijd beter: elke index maakt invoegen en bijwerken iets trager en kost ruimte. Voeg indexen toe voor queries die je gemeten hebt.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Mijn WordPress-site is traag in het beheer.

Kijk naar de tabel wp_options: veel autoload-opties of een grote hoeveelheid tijdelijke gegevens (transients) maken elke pagina trager. Ook plugins met eigen logtabellen groeien snel.

Helpt meer geheugen voor de database?

Soms: innodb_buffer_pool_size bepaalt hoeveel data in het geheugen past. Maar een ontbrekende index los je daar niet mee op.

Is OPTIMIZE TABLE nodig?

Na het verwijderen van veel rijen kan het ruimte teruggeven. Voor snelheid is een goede index meestal veel belangrijker.