Das Bild zeigt das realmaker-Logo neben einem Laptop mit geöffneter WordPress-Webseitenbearbeitungsoberfläche.

Warum sind optimierte Datenbank-Abfragen wichtig?

WordPress basiert auf einer MySQL-Datenbank, in der alle Inhalte, Einstellungen, Benutzer und Metadaten gespeichert sind. Eine langsame Datenbank kann die Ladezeit deiner Website drastisch verschlechtern.

Besonders bei Websites mit vielen Beiträgen oder WooCommerce-Produkten führen schlecht optimierte Abfragen zu Problemen wie:

  • Langsamen Ladezeiten: Hohe Absprungrate & schlechte Google-Rankings
  • Erhöhter Serverlast: Hosting-Kosten steigen
  • Fehlenden Inhalten: Besucher sehen keine Inhalte oder erhalten Fehler

Daher ist es entscheidend, effiziente SQL-Abfragen zu schreiben und Caching-Techniken zu nutzen.

1. Verwende WP_Query statt direkter SQL-Abfragen

Viele Entwickler machen den Fehler, direkt mit $wpdb->get_results() SQL-Abfragen durchzuführen.

Schlechte Methode:

global $wpdb;
$posts = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_status = 'publish'");

Diese Methode führt zu einer hohen Serverlast, weil sie alle Spalten und Inhalte lädt – selbst wenn diese nicht benötigt werden.

Optimierte Methode mit WP_Query:

$args = array(
    'post_type'      => 'post',
    'posts_per_page' => 10,
    'post_status'    => 'publish',
    'orderby'        => 'date',
    'order'          => 'DESC'
);
$query = new WP_Query($args);
while ($query->have_posts()) {
    $query->the_post();
    echo '<h2>' . get_the_title() . '</h2>';
}
wp_reset_postdata();

Vorteile von WP_Query:

  • Nutzt den internen WordPress-Cache
  • Holt nur die benötigten Daten
  • Einfach erweiterbar durch meta_query, tax_query etc.

2. Unnötige Datenbank-Abfragen entfernen

WordPress lädt bei jeder Seitenanfrage standardmäßig alle gespeicherten Metadaten eines Beitrags. Falls du nur spezifische Daten brauchst, solltest du gezielt abrufen.

Schlechtes Beispiel:

$all_meta = get_post_meta($post_id);

Besser: Nur spezifische Metadaten abrufen:

$views = get_post_meta($post_id, 'post_views', true);

3. Datenbank-Caching mit Transients nutzen

Falls du eine Abfrage mehrfach verwendest, kannst du sie mit Transients zwischenspeichern.

$cached_posts = get_transient('latest_posts');

if (!$cached_posts) {
    $cached_posts = new WP_Query(array(
        'posts_per_page' => 5,
        'post_status'    => 'publish'
    ));
    set_transient('latest_posts', $cached_posts, 60 * 60); // Cache für 1 Stunde speichern
}

Vorteile von Transients:

  • Reduzieren die Anzahl der Datenbankabfragen
  • Beschleunigen die Website

Falls du alle gespeicherten Transients löschen möchtest, kannst du diesen Code ausführen:

global $wpdb;
$wpdb->query("DELETE FROM wp_options WHERE option_name LIKE '_transient_%'");

4. Unnötige Datenbankeinträge bereinigen

Falls sich deine Datenbank über die Zeit aufbläht, kannst du alte Transients, Revisionen und Spam-Kommentare löschen:

function clean_database() {
    global $wpdb;
    $wpdb->query("DELETE FROM wp_postmeta WHERE meta_key='_transient_%'");
    $wpdb->query("DELETE FROM wp_posts WHERE post_type = 'revision'");
    $wpdb->query("DELETE FROM wp_comments WHERE comment_approved = 'spam'");
}
add_action('admin_init', 'clean_database');

Tipp: Falls du ohne Plugin regelmäßig deine Datenbank optimieren möchtest, erstelle einen Cronjob mit dieser Funktion.

5. Indexe für benutzerdefinierte Abfragen nutzen

Falls du viele eigene SQL-Abfragen nutzt, solltest du Indexe auf häufig genutzte Spalten setzen.

Beispiel für ein zusätzliches Index-Attribut auf meta_key:

ALTER TABLE wp_postmeta ADD INDEX meta_key_index (meta_key);

Vorteil: Beschleunigt SQL-Abfragen mit meta_key deutlich.

Fazit

  • Nutze WP_Query statt direkter SQL-Abfragen
  • Cache häufige Abfragen mit Transients
  • Lösche ungenutzte Einträge regelmäßig
  • Setze Indexe für häufig genutzte Spalten

Effiziente Abfragen sparen Ressourcen und sorgen für eine schnellere WordPress-Website.

Michael Rademacher

Michael Rademacher

Gründer & Geschäftsführer

CEO, Creative Director & Web Developer Michael Rademacher hat Multimedia und Kommunikation studiert und mit Bachelor of Arts abgeschlossen. Seit 2003 ist er selbstständiger Webentwickler und Filmemacher. Seine Kreativagentur realmaker realisiert Webprojekte, Imagefilme, Webcasts und Luftaufnahmen.