私はこれと同じように動作するクエリを持っていますが、クエリを少なくするために最適化したいと考えています。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']."\" /> ";
}
}
各投稿について、このクエリを実行してユーザーのメダルを表示します。投稿の数に応じて、クエリは3倍されます。たとえば、スレッドに10個の投稿がある場合... 10x3は30 ... 30個のクエリがこのコードで実行されています。
クエリを少なくするために最適化するにはどうすればよいですか?おそらくキャッシング?私は最適化があまり良くないので、ここであなたの入力を求めています。
「投稿数」はより深刻な乗数であるため、そのコードも表示されるべきではありませんか? – webbiedave