私は初心者ですが、このクエリでいくつかのパフォーマンス上の問題があります。 ヒント?クエリは巨大なデータベース上で実行されています...SQL最適化のヒント
SELECT
z_screenshots.guid,
z_screenshots.player_name,
z_screenshots.server,
z_screenshots.map,
z_screenshots.created,
z_screenshots.uploaded,
z_screenshots.uploader_id,
z_screenshots.filesize
FROM z_screenshots
INNER JOIN (
SELECT clients.guid
FROM clients WHERE clients.id NOT IN (
SELECT clients.id
FROM clients
INNER JOIN (
SELECT client_id
FROM penalties
WHERE penalties.inactive = 0 AND(penalties.type = 'Ban' OR (penalties.type = 'TempBan' AND FROM_UNIXTIME(penalties.time_expire) > NOW()))
GROUP BY penalties.client_id
) penalties
ON clients.id = penalties.client_id
)
) clients
ON z_screenshots.guid = clients.guid
ORDER BY z_screenshots.uploaded DESC
LIMIT ?, ?;
ヒント番号1 - 'not in'が遅いです。他にもオプションがありますが、ロジックを一致させる必要があります。また、指定しなかったデータベースエンジンによって異なります。 –