Långsam SQL Wordpress

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Meli
    Medlem
    • 2013-10-16
    • 3

    #1

    Långsam SQL Wordpress

    Hej,

    Ny här på forumet och behöver lite hjälp. Har en funktion för att hämta upp en custom meny från en annan sajt. De delar samma MySql men det är två olika databaser.

    Det ser ut på följande vis, men det påverkar laddningstiden ganska rejält när jag slår på anropen till funktionen. Misstänker att SQL-frågan är boven och hoppas att någon kan ta sig tid att hjälpa mig här så snart som möjligt

    PHP Code:
    function get_main_site_menus($custom_menu) {
    
            global $wpdb;
            $mydb = new wpdb('root','xxx','xxx','localhost');
    
            $menu_items = '';
    
            $custom_menu_items = $mydb->get_results("
                SELECT p2.post_title, p2.guid
                    FROM wp_posts p1
                    LEFT JOIN wp_term_relationships AS TR
                    ON TR.object_id = p1.ID
                    LEFT JOIN wp_postmeta AS PM
                    ON pm.post_id = p1.ID
                    LEFT JOIN wp_posts AS p2
                    ON p2.ID = PM.meta_value
                    WHERE p1.post_type = 'nav_menu_item'
                    AND TR.term_taxonomy_id = ( SELECT wp_terms.term_id FROM wp_terms WHERE wp_terms.slug = '$custom_menu')
                    AND pm.meta_key = '_menu_item_object_id'
                    ORDER BY p1.menu_order ASC
                ");
            if ($custom_menu_items) {
                foreach($custom_menu_items as $custom_menu_item) {
                    $menu_items .= '
    <li><a>guid . '">' . $custom_menu_item->post_title . '</a></li>
    ';
                }
            }
    
            return $menu_items;
    
        } 
    
  • nitro2k01
    Forumvärd
    • 2003-08-26
    • 7630

    #2
    Känns som att du vill köra med inner join istället för left join. Och se till att du har index på alla ID-kolumner du har skapat själv.
    Och för övrigt, du stoppar $custom_menu rakt in i queryn utan att escape:a värdet. Dåligt dåligt för säkerheten.
    Gameboy Genius - Foto: Gatukonst och elektronikporr
    Internklippning:
    1) Snaggning av fångar.
    2) Klippning frisörer emellan.

    Comment

    • Meli
      Medlem
      • 2013-10-16
      • 3

      #3
      Tack för ditt svar!

      Jag har testat med inner istället för left men utan någon märkbar skillnad. Tabellerna är enbart default i Wordpress.

      Någon annan tanke om möjlig lösning?

      Comment

      Working...