現在、クエリから 300,000 行以上を返す Web サイトの高速化に取り組んでいます。これがDBサーバーに過度の負荷をかけるとは思いませんが、このクエリは、ユーザーが持っている「ギャラリー」の数に応じてwhileループで発生しています。
たとえば、ジョーのアカウントには 10 個のギャラリーがあります。これらの各ギャラリーには x 数の画像があり、それらの画像には x 数のコメントがあります。現在実行中のクエリは...
SELECT count(*) as total
FROM galleryimage a
INNER JOIN imagecomments b ON a.id=b.imgId
WHERE a.galleryId='".$row['id']."'
AND b.note <> ''
...galleryimage テーブル 334,000 行と imagecomments テーブル 76,000 行をすべて調べて、各ギャラリーで結果を返します。1 つのギャラリーでクエリを実行すると、約 578 ミリ秒で結果が返されますが、多くのギャラリー (たとえば 30 ~ 40) では、ページの読み込み時間が 17 秒以上かかる可能性があります。この問題に対処する方法について何か提案はありますか?
DBアーキテクチャを変更できません....
ギャラリー ID のクエリ
SELECT a.id,
a.created,
a.name,
b.clientName,
a.isFeatured,
a.views,
a.clientId
FROM gallery a
INNER JOIN client b
ON a.clientId = b.id
WHERE a.isTemp = 0
AND a.clientRef = '{$clientRef}'
AND a.finish='1'
AND a.isArchive='0'
ORDER BY created
DESC