Performance-Probleme bei Aufruf einer Wordpress-Seite

  • Hallo liebe WP-Gemeinde,

    ich habe momentan leider mit kleinen Performance-Problemen auf meiner WP-Installation zu kämpfen.

    Jedes Mal, wenn ich eine Unterseite des WP aufrufe (also nicht die Hauptseite), betragen die Ladezeiten durchschnittlich ca. 15-20 Sekunden.

    Nach langer Recherche unter Hinzuziehung des Plugins Debug Queries konnte ich herausfindne, dass es sich dabei um folgenden SQL-Befehl handelt:

    SQL
    SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND  (((wp_posts.post_title LIKE '%search%') OR (wp_posts.post_content LIKE  '%search%'))) AND wp_posts.post_type IN ('post', 'page', 'attachment')  AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND  wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT  0, 10

    Die Laufzeit dieses Befehls liegt bei ca. 15 Sekunden und das ist eindeutig zu lang.

    Weitere Infos zum WP:

    • Version: 3.1.1
    • 158.000 Posts-Einträge
    • 1.737.000 Postmeta-Einträge
    • 14.000 Comments-Einträge


    Ich hoffe, ihr habt eine Lösung zu diesem Problem und könnt mir weiterhelfen.

    Mich stellt sich die Frage, was diese Abfrage bringt, denn als Ergebnis erhalte ich kein Ergebnis. Wie kann ich also das Ausbauen?

    Vielen Dank für eure Hilfe

    Grüße
    schüri

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • Nach langer Recherche unter Hinzuziehung des Plugins Debug Queries konnte ich herausfindne, dass es sich dabei um folgenden SQL-Befehl handelt:


    Die Laufzeit dieses Befehls liegt bei ca. 15 Sekunden und das ist eindeutig zu lang.

    Weitere Infos zum WP:

    • Version: 3.1.1
    • 158.000 Posts-Einträge
    • 1.737.000 Postmeta-Einträge
    • 14.000 Comments-Einträge

    Hier mal ein Zitiat aus dem MySQL Handbuch

    Wenn Sie SELECT SQL_CALC_FOUND_ROWS verwenden, muss MySQL berechnen, wie viele Datensätze in der vollständigen Ergebnismenge enthalten sind.

    http://dev.mysql.com/doc/refman/5.1…-functions.html

    ich würde vermutlich auf SQL_CALC_FOUND_ROWS verzichten..

    da du angemeldet warst hast due die unsägliche 'private' abfrage auch im query

    PHP
    if ( is_user_logged_in() ) {
                    // Add private states that are limited to viewing by the author of a post or someone who has caps to read private states.
                    $private_states = get_post_stati( array('private' => true) );
                    foreach ( (array) $private_states as $state )
                        $where .= current_user_can( $read_private_cap ) ? " OR $wpdb->posts.post_status = '$state'" : " OR $wpdb->posts.post_author = $user_ID AND $wpdb->posts.post_status = '$state'";
                }


    und warum du keine "konkrete" Datenbankabfrage stellst sondern in dem title und inhalten suchst

    Code
    AND  (((wp_posts.post_title LIKE '%search%') 
    OR (wp_posts.post_content LIKE  '%search%')))

    könnte dies am wilden gebastel im Template liegen?

    cu

    ralf

    Mit offenen Augen träumen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!