WordPress lagrer alt i en MySQL- (eller MariaDB-) database. Over tid “blåses” denne databasen opp og samler unødvendige data, noe som kan redusere hastigheten på spørringer og hele nettstedet. En større database betyr lengre sikkerhetskopieringstider, tregere SELECT-spørringer og økt Time To First Byte (TTFB).
I denne omfattende guiden for utviklere vil vi gå gjennom avansert databaseoptimalisering, fra enkel rengjøring til spørringsanalyse og InnoDB-konfigurasjon.
Hvorfor databaseoptimalisering er kritisk i 2026
I 2026, når en TTFB under 100ms er standarden, er en “tung” database et anker for nettstedet ditt. Selv om du har en superrask server (PHP 8.4, NVMe), kan dårlig optimaliserte SQL-spørringer drepe ytelsen.
Hva gjør WordPress-databasen treg?
- Bloatware (Overskuddsdata): Innleggsrevisjoner, kommentarspam, foreldreløse metadata.
- Autoloaded Options: Data lastet ved hver sideoppdatering, selv om de ikke brukes.
- Manglende indekser: Spørringer som må skanne hele tabellen (Full Table Scan).
- Tabellfragmentering: Hull i dataene som øker filstørrelsen på disken.
Slik rydder du opp i WordPress-databasen
La oss starte med å fjerne søppelet. Du kan gjøre dette med et programtillegg (WP-Optimize), men som utvikler bør du vite hvordan du gjør det “manuelt” ved hjelp av SQL eller WP-CLI.
Slik sletter du innleggsrevisjoner
Hver gang du klikker “Lagre utkast”, opprettes en ny kopi av innlegget. Med lange redigeringsøkter kan du ha hundrevis av revisjoner for en enkelt artikkel.
SQL-spørring for å sjekke revisjonsantall:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';Slette revisjoner (SQL):
DELETE FROM wp_posts WHERE post_type = 'revision';Anbefalt: Bruk WP-CLI (Sikrere):
wp post delete $(wp post list --post_type='revision' --format=ids) --forceSlik sletter du spamkommentarer og søppel
Det er ingen vits i å beholde spam eller slettede innlegg.
SQL:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';Slik sletter du utløpte transients
Transients er hurtigbuffer lagret i databasen (wp_options). Noen ganger blir ikke utløpte transients fjernet automatisk.
SQL for å slette utløpte transients:
DELETE FROM wp_options WHERE option_name LIKE ('_transient_timeout%') OR option_name LIKE ('_transient_%');WP-CLI (Beste metode):
wp transient delete --allSlik reduserer du autoload i wp_options
Tabellen wp_options inneholder en autoload-kolonne. Hvis satt til yes, lastes det alternativet ved hver sideinnlasting. Programtillegg etterlater ofte søppel her etter avinstallering.
Sjekk størrelsen på autoload-data
Sjekk hvor mye data (i bytes) som lastes automatisk:
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload = 'yes';Hvis resultatet overstiger 800 KB - 1 MB, har du et problem.
Slik finner du de største autoload-alternativene
SELECT option_name, LENGTH(option_value) as option_size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY option_size DESC
LIMIT 10;Du vil ofte finne gamle data fra cache-programtillegg, byggere eller logger her. Hvis programtillegget ikke lenger brukes, kan du trygt slette disse alternativene eller endre autoload til no.
Konvertere MyISAM-tabeller til InnoDB
I 2026 bør du ikke lenger bruke MyISAM-motoren. InnoDB er standarden, som tilbyr:
- Låsing på radnivå (Row-level locking): MyISAM låser hele tabellen ved skriving.
- ACID-transaksjoner: Datasikkerhet.
- Foreign Keys: Relasjonskonsistens.
Slik sjekker du hvilken motor tabellene bruker
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'ditt_databasenavn';Slik bytter du motor med ALTER TABLE
Hvis du finner MyISAM-tabeller, konverter dem:
ALTER TABLE wp_posts ENGINE=InnoDB;
ALTER TABLE wp_comments ENGINE=InnoDB;
ALTER TABLE wp_options ENGINE=InnoDB;
-- og så videre for alle tabellerLegge til MySQL-indekser i WordPress
WordPress har vanligvis gode standardindekser, men programtillegg legger ofte til sine egne tabeller uten riktige indekser. Manglende indeks på en WHERE- eller JOIN-spørring betyr at MySQL må skanne hver rad i tabellen.
Hvorfor er ordresøk i WooCommerce tregt uten indeks?
Hvis du har en butikk med 100 000 ordrer, og et programtillegg søker etter ordrer med meta_key uten indeks, kan siden “Min konto” ta 10 sekunder å laste.
Løsning: Legg til indekser i kolonner du ofte søker eller sorterer etter.
CREATE INDEX idx_meta_key_value ON wp_postmeta (meta_key(191), meta_value(50));(Merk: Indeksering av meta_value er vanskelig fordi det er TEXT. Unngå å søke etter meta_value hvis mulig).
Slik hindrer du at databasen vokser med wp-config.php
I stedet for å rengjøre konstant, er det bedre å ikke forsøple. Konfigurer WordPress klokt.
Slik begrenser du revisjoner, papirkurv og autolagring
Legg til i wp-config.php:
// Begrens til 5 nylige versjoner
define( 'WP_POST_REVISIONS', 5 );
// Tøm søppelbøtten hver 7. dag (standard er 30)
define( 'EMPTY_TRASH_DAYS', 7 );
// Øk autosave-intervall (færre AJAX-forespørsler i redigering)
define( 'AUTOSAVE_INTERVAL', 300 ); // sekunderSlik deaktiverer du filredigering i WordPress
For sikkerhet og hygiene:
define( 'DISALLOW_FILE_EDIT', true );Finne trege spørringer med Query Monitor
Ikke gjett hva som bremser nettstedet. Installer programtillegget Query Monitor. Etter installasjon vil du i admin-linjen se sidegenereringstid og antall SQL-spørringer.
- Klikk på statistikken i linjen.
- Gå til fanen “Queries”.
- Sorter etter “Time”.
Hvis du ser en spørring som tar 0,5s eller mer, det er ditt optimaliseringsmål. Det kommer ofte fra et dårlig skrevet programtillegg (“Nylig viste produkter”, “Besøksteller”, etc.).
Sjekkliste for optimalisering av WordPress-databasen
- Sikkerhetskopi: Ta alltid sikkerhetskopi før du arbeider med databasen.
- Motor: Sørg for at alle tabeller er InnoDB.
- Autoload: Sjekk
autoloaded options-størrelsen (sikt mot < 800KB). - Rengjøring: Fjern revisjoner, spam og utløpte transients.
- Indekser: Sjekk om tunge spørringer bruker indekser.
- Forebygging: Konfigurer
wp-config.phpfor å begrense søppelproduksjon.
Når databasen din er slank og rask, bruker PHP mindre minne, og brukerne får innhold umiddelbart. Dette er grunnlaget for moderne WordPress.







