私は条件付きcount()ステートメントを使用して最適化できると信じている本当に遅いSQLステートメントがありますが、これを行う方法を考えることはできません。複数のテーブルから数えて効率的なSQL
SELECT TOP 10 U.UserID,
U.Fullname,
U.URL,
U.Fname,
U.ProfilePic,
(SELECT Count(ResourceID)
FROM resources R
WHERE R.UserID = U.UserID) AS ResourcesPosted,
(SELECT Count(JobID)
FROM Jobs J
WHERE J.UserID = U.UserID) AS JobsPosted,
(SELECT Count(AuditID)
FROM Audit_Trail AT
WHERE AT.UserID = U.UserID
AND TYPE = 1
AND Entry LIKE '%logged in%') AS TotalLogins,
(SELECT Count(EventID)
FROM Future_Events_Listing E
WHERE E.UserID = U.UserID) AS EventsPosted
FROM User_basics U
LEFT JOIN Pod_Membership PM ON PM.userID = U.UserID
WHERE PodID = 268
いくつかの種類の内部結合を行い、条件付きで項目を数えますか?
'Pod_Membership'テーブルに' PodID'がありますか?そうであれば、「LEFT JOIN」は「INNER JOIN」でなければならず、「WHERE」はそのように変換します。 – strickt01
@ strickt01ありがとう、私は今それをやった。 – chris
あなたは 'COUNT'を実行しているテーブルでUserIDをインデックスに登録していますか?それがあなたの問題でしょうか? UserID以外でカウントしている他のテーブル間に関連がない場合は、 'WHERE'節に既にあるもの以外のもの、つまりUserIDを適用できる' COUNT'の条件はありません。 – strickt01