Kompletter Leitfaden zur Steigerung der Effizienz von Abfragen in der WordPress-Datenbank

3-Minuten-Lesung
2026-03-16
2026-06-06
2,169
Ich bekomme eine Provision, wenn du über die untenstehenden Links einkaufst – ohne zusätzliche Kosten für dich.

Kompletter Leitfaden zur Steigerung der Effizienz von Abfragen in der WordPress-Datenbank

Die Datenbank ist die Grundlage einer WordPress-Website – alle Inhalte, Benutzerdaten und Einstellungen werden darin gespeichert. Mit dem Wachstum des Website-Inhalts können ineffiziente Datenbankabfragen allmählich zu einem Hauptproblem werden, das die Leistung der Website verlangsamt und die Benutzererfahrung beeinträchtigt. Die Effizienz der Datenbankabfragen hat direkten Einfluss auf die Ladezeit der Seiten sowie den Verbrauch von Serverressourcen und indirekt auf die Indexierung und Platzierung der Website in Suchmaschinen.

Die Erstellung einer WordPress-Seite kann Dutzende – oder sogar Hunderte – von Datenbankabfragen beinhalten. Daher ist die Optimierung von Datenbankabfragen ein entscheidender und äußerst effektiver Bestandteil der Leistungsverbesserung. Im Folgenden wird systematisch erklärt, wie die Effizienz der Datenbankabfragen in WordPress gesteigert werden kann.

Verstehen des Lebenszyklus von WordPress-Datenbankabfragen

Um eine effektive Optimierung zu erreichen, ist es zunächst notwendig zu verstehen, wie Abfragen in WordPress generiert und ausgeführt werden. Eine typische Abfrageanfrage durchläuft mehrere Schlüsselphasen – von der Initiierung über die Verarbeitung bis zur Rückgabe der Ergebnisse – und in jeder Phase besteht Potenzial für Optimierungen.

Empfohlene Lektüre Wie man mit einem WordPress-Thema eine effiziente und ansprechende Firmenwebseite erstellt

Die eingebauten Abfrageobjektklassen von WordPress

Auf der Kernausführungsebene verwendet WordPress hauptsächlich…WP_QueryDiese Klasse dient der Verarbeitung verschiedener Datenabfragen. Sie bildet die Grundlage für die Erstellung von Seiteninhalten – wie Artikeln, Standardseiten oder benutzerdefinierten Artikeltypen. Beispielsweise werden die Inhalte der Startseite, der Kategorienseite sowie der Artikelseitenliste größtenteils durch diese Klasse generiert.WP_QueryEs wird durch Beispiele angetrieben. Es verschlüsselt den komplexen Prozess der Erstellung von SQL-Anweisungen; Entwickler definieren die Abfragebedingungen mithilfe eines Arrays von Parametern.

UltaHost – WordPress-Hosting-Anbieter
30-tägige Geld-zurück-Garantie, unbegrenztes Bandbreiten- und Datenbankvolumen, kostenlose DDoS-Schutzmaßnahmen sowie ein Rabatt von 501 auf 4 Terabyte bei einer Kaufdauer von 3 Jahren.
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'category_name' => 'news'
);
$query = new WP_Query($args);

Caching Mechanism for Query Results

WordPress verfügt über einen integrierten Objektcaching-Mechanismus, der darauf abzielt, wiederholte Abfragen an die Datenbank zu reduzieren.get_post()get_term_by()Wenn Funktionen aufgerufen werden, versucht WordPress zunächst, die Daten aus dem Cache zu laden.

Der Kern dieser Cache-Technologie ist…WP_Object_CacheKlasse. Es ist jedoch zu beachten, dass der Cache standardmäßig (d.h. ohne Installation eines Persistenz-Caching-Plugins) “nicht persistent” ist und nur während des Lebenszyklus einer einzelnen Seitenanfrage existiert. Das bedeutet, dass der Cache beim nächsten Besuch des Benutzers ungültig wird und die Abfrage erneut die Datenbank abrufen muss. Um eine deutliche Leistungsverbesserung zu erzielen, wird in der Regel eine persistente Objektcaching-Infrastruktur wie Redis oder Memcached benötigt. Diese kann mithilfe von Plugins (z. B. Redis Object Cache) mit dem System integriert werden.WP_Object_CacheKopplung.

Übliche Werkzeuge zur Analyse langsamer Abfragen

Die Lokalisierung ist der erste Schritt bei der Optimierung. Das direkteste Werkzeug dafür ist WordPress.SAVEQUERIESDebugging constants: Definieren Sie sie als…trueWordPress speichert alle ausgeführten SQL-Abfragen sowie die damit verbundenen Zeitaufwände in einem globalen Array.

// 在 wp-config.php 中添加
define('SAVEQUERIES', true);
// 页面底部(如footer.php)检查查询
if (current_user_can('administrator')) {
    global $wpdb;
    print_r($wpdb->queries);
}

Darüber hinaus bieten viele professionelle Query-Überwachungs-Plugins, wie Query Monitor, eine benutzerfreundlichere Oberfläche, um alle Abfragen, ihre Quellen (Plugins oder Themen) sowie die Ausführungszeiten anzuzeigen. Langsame Abfragen werden dabei hervorgehoben, was eine wertvolle Hilfe bei der Optimierung der Entwicklungsumgebung darstellt. In der Produktionsumgebung sollte die Funktion für die Aufzeichnung langsamer Abfragen (Slow Query Log) des Datenbankservers (z. B. MySQL) aktiviert werden, um eine dauerhafte Überwachung durchzuführen.

Empfohlene Lektüre Umfassender Leitfaden für WooCommerce: Erstellen Sie Ihre professionelle E-Commerce-Website von Grund auf

Optimierungsmethoden auf der Ebene des Kerncodes

Code ist die Grundlage für effiziente Abfragen. Egal ob bei der Entwicklung von Themes oder Plugins – die Befolgung von Best Practices verhindert von Anfang an potenzielle Leistungsprobleme.

Die korrekte Nutzung der Kern-API-Funktionen

WordPress bietet eine umfangreiche und optimierte API mit zahlreichen Funktionen, die vorzugsweise genutzt werden sollten anstatt direkt SQL-Abfragen zu schreiben. Zum Beispiel kann mithilfe der API die Anzahl der Artikel in der aktuellen Kategorie abgerufen werden.
Gegenbeispiel (ineffizient): Die direkte Verwendung$wpdb->get_results()Schreiben Sie die ursprüngliche SQL-Abfrage – dabei wurde möglicherweise die Verwendung von Caches ignoriert.
Guter Beispiel (effizient): Die VerwendungWP_Queryoder deren abgepackte Funktionenget_posts()Es nutzt automatisch die Caches und die Leistung wird vom Kernteam gewartet.

In Schleifen sollte die Verwendung von Elementen vermieden werden, die…get_post_meta()Bei der Durchführung einer großen Anzahl von Abfragen mit einer bestimmten Funktion ist es die richtige Vorgehensweise, diese Funktion bei der Initialisierung zu initialisieren bzw. vorzubereiten.WP_QueryWenn, dann durch…'meta_query'Parameter zur Filterung verwenden oder anwenden.update_postmeta_cacheMit dieser Funktion können die Metadaten aller Artikel auf einmal abgerufen werden.

hosting.com Shared Hosting
Hohe Leistung mit AMD EPYC-CPUs, NVMe-SSD-Speicher und LiteSpeed, fachkundiger Inhouse-Support rund um die Uhr, erweiterte Sicherheitsmaßnahmen einschließlich SSL, Brute-Force-, Malware- und DDoS-Schutz, Einsparungen von bis zu 73%

Die Implementierung der Transients-API dient dem Zweck, kurzfristige Daten zu speichern und wiederzugeben.

Für teure Abfragen, bei denen keine hohe Echtzeitreaktion erforderlich ist (z. B. Ergebnisse von externen API-Aufrufen, komplexe Berechnungen), sollte die WordPress-Transients-API zur Caching-Verwaltung verwendet werden. Im Grunde genommen werden die Daten zusammen mit einem bestimmten Schlüsselnamen und einer Ablaufzeit in der Datenbank (oder in einem Objektcache, sofern verfügbar) gespeichert.
Beispielsweise das Cachen einer Liste beliebter Artikel:

$popular_posts = get_transient('mytheme_popular_posts');
if (false === $popular_posts) {
    // 如果缓存不存在或已过期,执行复杂查询
    $args = array('meta_key' => 'view_count', 'orderby' => 'meta_value_num', 'posts_per_page' => 5);
    $popular_posts = new WP_Query($args);
    // 缓存查询结果12小时(43200秒)
    set_transient('mytheme_popular_posts', $popular_posts, 43200);
}

Optimierung der Erstellung benutzerdefinierter Abfragen

Wenn es unbedingt notwendig ist,$wpdbWenn Sie eine benutzerdefinierte Abfrage für eine Klasse durchführen, müssen Sie die Sicherheitsvorschriften strikt einhalten und die richtigen Hilfsmethoden verwenden. Stellen Sie sicher, dass Sie dies tun.$wpdb->prepare()Vorbereiten Sie die Abfrage, um SQL-Injectionen zu verhindern und sicherzustellen, dass die Daten korrekt entschlossen werden.

global $wpdb;
$user_id = 123;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}custom_table WHERE user_id = %d AND status = %s",
        $user_id,
        'active'
    )
);

Gleichzeitig sollte sichergestellt werden, dass auf den Feldern der Abfragetabellen entsprechende Indizes vorhanden sind.JOINoperational or complexWHEREDies gilt insbesondere für Klauseln.

Empfohlene Lektüre Das ultimative WordPress-Optimierungshandbuch: Eine umfassende Strategie zur Steigerung der Geschwindigkeit und Sicherheit

Durch die Nutzung von fortgeschrittenen Plugins und externen Diensten werden Abfragen optimiert.

Wenn die Code-Optimierung an ihre Grenzen stößt, können etablierte Tools und Dienste genutzt werden, um weitere Leistungsverbesserungen zu erzielen.

Aktivieren Sie die persistente Objektcache.

Dies ist eine der effektivsten Methoden für Websites mit hohem Datenverkehr. Durch die Installation von Redis- oder Memcached-Servern in Kombination mit entsprechenden WordPress-Plugins (wie “Redis Object Cache” oder “Memcached Redux”) kann…WP_Object_CacheDie Daten werden in der Speicherung im Arbeitsspeicher (Memory) abgelegt.
Dies macht das Caching von Seitenübergreifenden Anfragen möglich. Wenn beispielsweise ein HTML-Abschnitt eines beliebten Artikels erstellt und in der Cache-Datei gespeichert wird, werden alle nachfolgenden Anfragen dieser Seite direkt aus dem Speicher abgerufen – ohne dass PHP ausgeführt oder Datenbankabfragen durchgeführt werden müssen. Nach der erfolgreichen Konfiguration werden Sie eine deutliche Reduzierung der Anzahl der Abfragen feststellen.

InterServer Shared Hosting
Shared Hosting $2.50 USD pro Monat, erster Monat $0.1 USD Promo-Code tryinterserver, 461 Cloud-Apps Skripte, ein Klick installieren.

Verwendung von Pagination und Lazy Loading

Unbegrenztes Scrollen oder das Laden einer großen Anzahl von Artikeln kann zu sehr aufwendigen Abfragen führen. Dies sollte vermieden werden.WP_QueryVerwenden Sie es weise und klug.'posts_per_page'Zusätzlich zu den Pagierungsparametern dient dies dazu, zu verhindern, dass auf einmal Hunderte oder Tausende von Datensätzen abgerufen werden. Bei langen Listen oder Bildergalerien kann die Technologie des „Lazy Loadings“ (verzögerte Ladung) eingesetzt werden. Dadurch werden Inhalte, die nicht im Sichtfeld liegen, erst dann geladen, wenn sie benötigt werden. Dies verringert erheblich den Datenbankdruck während des Ladevorgangs der Startseite.

Man sollte in Betracht ziehen, eine lesbare Kopie der Datenbank einzuführen.

Für sehr große WordPress-Webseiten, bei denen mehr gelesen als geschrieben wird (z. B. Nachrichtenportale), kann die Master-Slave-Replication der Datenbank in Betracht gezogen werden. Alle Schreibvorgänge (Veröffentlichung von Artikeln, Kommentaren) werden auf die Hauptdatenbank geleitet, während die meisten Lesevorgänge auf eine oder mehrere nur lesende Sekundärdatenbanken verteilt werden. Dies erfordert Plugins oder eine tiefe Anpassung der Systeme, um die Trennung von Lese- und Schreibvorgängen zu ermöglichen – der technische Aufwand ist daher relativ hoch. Allerdings kann dies die gleichzeitige Leseleistung der Datenbank erheblich verbessern.

Optimierung der Konfiguration von Servern und Datenbanken

Letztendlich werden alle Abfragen auf MySQL- oder MariaDB-Servern ausgeführt. Die Optimierung der Serverkonfiguration ist die Grundlage für die effiziente Ausführung von Abfragen.

Wichtige Anpassungen an den MySQL-Performance-Parametern

In der Konfigurationsdatei des Datenbankservers (z. B.)my.cnfIn diesem Kontext gibt es einige Parameter, die für die Leistung von WordPress von entscheidender Bedeutung sind.innodb_buffer_pool_sizeDie Größe des InnoDB-Puffers sollte auf 70–80 % der verfügbaren Speicherkapazität eingestellt werden. Dadurch wird bestimmt, wie viel Daten und Indizes die Datenbank im Speicher vorhalten kann.query_cache_size(Die Abfrage des Cache-Größens wurde in Versionen ab 8.0 entfernt, war aber in früheren Versionen bei Szenarien mit hoher Wiederholungsrate einfacher Abfragen nützlich.)max_connectionsDie Einstellungen müssen so angepasst werden, dass sowohl Verbindungen zum Webserver als auch zu den Ersatzverbindungen unterstützt werden.

Regelmäßige Wartung der Datenbank durchführen.

WordPress erzeugt während seiner Nutzung eine große Menge an redundanten Daten – darunter Überarbeitungen, Entwürfe, zu prüfende Kommentare sowie vorübergehend veraltete Daten. Diese Daten vergrößern unnötig die Datenbanktabellen und verringern die Effizienz der Abfragen. Es empfiehlt sich, regelmäßig Plugins wie “WP-Optimize” oder “Advanced Database Cleaner” zu verwenden, um diese Daten zu entfernen. Zudem können Optimierungs- (OPTIMIZE TABLE) und Reparaturvorgänge (REPAIR TABLE) auf den Datenbanktabellen durchgeführt werden, um Datenfragmente zu ordnen und die Effizienz der Dateneingabe/Ausgabe (I/O) zu verbessern. Diese Vorgänge sollten am besten in Zeiten geringer Belastung über phpMyAdmin oder die Befehlszeile durchgeführt werden.

Effiziente Indizes für Datenbanktabellen erstellen

Dies ist eine Kernoptimierung auf der Datenbankebene. Indizes funktionieren wie das Inhaltsverzeichnis eines Buches und helfen dem Datenbankmotor dabei, Daten schnell zu finden. Zunächst sollten Sie sicherstellen, dass die Kerntabellen von WordPress (insbesondere…)wp_postswp_postmetawp_commentsDie Primär- und Fremdschlüsselindizes auf den entsprechenden Tabellen sind vollständig. Zweitens gilt dies auch für diejenigen Felder, die häufig vorkommen…WHEREORDER BYoderJOINDie Felder in den Bedingungen (z. B.)post_statuspost_typecomment_post_IDmeta_keyEs sollte geprüft werden, ob es notwendig ist, einen einfachen Index oder einen komplexen Index hinzuzufügen. Die Erstellung eines Indexes kann mithilfe von SQL-Befehlen in phpMyAdmin erfolgen, zum Beispiel:

ALTER TABLE wp_postmeta ADD INDEX idx_meta_key (meta_key(50));

Hinweis: Die Erstellung eines Indexes verbraucht zusätzlichen Festplattenplatz und kann die Schreibgeschwindigkeit leicht beeinträchtigen. Es ist daher wichtig, die Vor- und Nachteile abzuwägen.

Zusammenfassungen

Die Optimierung von WordPress-Datenbankabfragen ist ein systematisches Projekt, das aus vier Dimensionen – Diagnose, Programmierung, Werkzeuge und Betrieb und Wartung – koordiniert durchgeführt werden muss. Der beste Ansatz besteht darin: Zunächst mithilfe von Werkzeugen langsame Abfragen genau zu lokalisieren; anschließend während der Entwicklung strikt die Core-APIs sowie die Caching-Richtlinien einzuhalten, um ineffizienten Code zu vermeiden; danach eine persistente Objektcaching-Lösung für die Website einzuführen, um sofortige Leistungsverbesserungen zu erzielen; und schließlich auf der Ebene des Datenbankservers eine sinnvolle Konfiguration sowie Wartung durchzuführen sowie für bestimmte große Tabellen effektive Indizes zu erstellen. Durch diese Kombination von Optimierungsmaßnahmen können auch WordPress-Websites mit umfangreichem Inhalt sicherstellen, dass Datenbankabfragen effizient ablaufen und die Antwortzeiten schnell sind, was sowohl den Nutzern als auch Suchmaschinen ein reibungsloses Benutzererlebnis bietet.

FAQ Häufig gestellte Fragen

Wo werden in WordPress “transiente” Daten gespeichert?

Die Speicherung der Daten über die Transients-API von WordPress hängt von Ihrer Konfiguration ab. Wenn auf der Website keine dauerhafte Objektcache (z. B. via Redis) aktiviert ist, werden die temporären Daten in der Datenbank abgelegt.wp_optionsIm Tabelleninhalt (…)_transient_Wenn die Persistenz-Cache für Objekte aktiviert ist, werden temporäre Daten bevorzugt im Speicher-Cache (z. B. Redis) abgelegt. Dies ermöglicht sehr schnelle Lese- und Schreibvorgänge und verringert den Belastung auf die Datenbank erheblich.

Wie kann man veraltete, temporäre Daten in Massen löschen?

Ungültige, temporäre Daten werden manchmal nicht automatisch gelöscht. Sie können spezielle Datenbankreinigungs-Plugins verwenden (z. B. WP-Optimize), die in der Regel die Möglichkeit bieten, ungültige temporäre Daten mit nur einem Klick zu entfernen. Alternativ können Sie, sofern die Sicherheit gewährleistet ist, auch direkt in phpMyAdmin SQL-Befehle ausführen, um die ungültigen temporären Daten zu löschen.

DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%';

Ist es normal, dass die Anzahl der Abfragen nach Aktivierung des Redis-Objektcaches deutlich sinkt?

Das ist völlig normal und auch der Haupteffekt der Aktivierung des persistenten Objektcaches. Die reduzierte Anzahl der Abfragen bedeutet, dass eine große Menge an Daten – wie Menüs, Artikelobjekte und Abfrageergebnisse – direkt aus dem Speicher (Redis) abgerufen wird, ohne dass eine Anfrage an die Datenbank erfolgen muss. Dadurch wird die CPU- und I/O-Last des Datenbankservers direkt verringert, was ein Zeichen für eine Verbesserung der Leistung ist. Sie können mithilfe des Query Monitor-Plugins erkennen, dass der Anteil der “Cache-Erfolge” deutlich gestiegen ist.

Auf welchen Datenbankfeldern sollten Indizes erstellt werden?

Bei der Erstellung von Indizes sollten die Prinzipien hoher Häufigkeit der Abfragen sowie hoher Filterfähigkeit beachtet werden. Besondere Aufmerksamkeit sollte auf Feldern gerichtet werden, die häufig für Suchvorgänge, Sortierungen und Zusammenstellungen verwendet werden. In WordPress gehören zu den typischen Kandidaten für Indizes die folgenden Felder:wp_postsTabellepost_typeundpost_statusKombinationen (häufig verwendet bei der Abfrage veröffentlichter Artikel)wp_postmetaTabellemeta_key(Häufig verwendet zum Filtern nach bestimmten Metadaten), sowiewp_commentsTabellecomment_post_ID(Die Funktion dient der Verknüpfung von Artikeln und Kommentaren.) Vor dem Hinzufügen eines Indexes ist es am besten, die spezifischen Protokolle der langsamen Abfragen zu analysieren.