我有一個查詢,它的工作原理與它應該一樣,但是,我想優化它以使用更少的查詢。PHP/MySQL查詢優化?
以下代碼來自我爲公告板系統創建的用戶獎牌插件。
$types = array('numposts', 'numthreads', 'numreps');
$medals = "";
foreach($types as $type)
{
$query = $db->query("
SELECT u.*, m.*
FROM ".TABLE_PREFIX."medals_".$type." m
LEFT JOIN ".TABLE_PREFIX."medals u ON (m.".$type."_id=u.awid)
WHERE awuid='".intval($post['uid'])."' AND type='".$type."'
ORDER BY `".$type."` DESC LIMIT 1
");
while($results = $db->fetch_array($query))
{
$medals .= "<img src=\"uploads/medals/".$results['icon']."\" border=\"0\" alt=\"".$results['descrition']."\" title=\"".$results['description']."\" /> ";
}
}
對於每個帖子,它運行此查詢以顯示用戶的獎牌。根據帖子的數量,查詢乘以三倍。所以,例如,如果一個線程有10個帖子... 10x3是30 ...這30個查詢正在執行的只是這個代碼。
優化這個以減少查詢的最佳方式是什麼?也許緩存?我不太擅長優化,所以我在這裏要求您的輸入。
由於「帖子數量」是更嚴重的乘數,我們是否也不應該看到該代碼? – webbiedave