webForumDet fria alternativet

Långsam SQL Wordpress

Databaser & SQL

2 svar · 820 visningar · startad av Meli

Medlem sedan okt. 20133 inlägg
Frågan#1

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 :)

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;

	}
Medlem sedan aug. 20039 340 inlägg
#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.

Medlem sedan okt. 20133 inlägg
#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?

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)