7 つのテーブルがあり、次の SQL クエリを実行すると、クエリの処理に時間がかかり、処理中にシステムがハングします。
SELECT DISTINCT
M.MerchantId,
M.MerchantName,
M.Image
FROM
CCodes as CC,
Merchants as M,
MemberStores as MS,
MemberCategories as MC,
Categories as C,
MembersLogin as ML,
CategoryAndMerchant as CM
WHERE
(
(
M.MerchantId = MS.MerchantId
AND MS.MemberId = ML.Id
)
OR
(
ML.Id = MC.MemberId
AND MC.CategoryId = C.Id
AND C.Id = CM.CategoryId
AND CM.MerchantId = M.MerchantId
AND CC.MerchantId = M.MerchantId
)
)
AND CC.Status = 1
AND M.Status = 1
AND C.Status = 1
AND CC.Status = 1
AND EndDate BETWEEN '$todaysDate' AND '$endDate'
AND ML.Id = $id
ORDER BY EndDate asc
$todaysDate、$endDate、および $id には任意の値を想定できます。
実行時間ができるだけ短くなるようにクエリを最適化するのを手伝ってください。