次を使用して、3 つのテーブル間の結合から取得した結果セットがあります。
SELECT X.*, Y.Name FROM `A` AS X
INNER JOIN `B` AS Y
INNER JOIN `C` AS Z
ON X.id=Y.id AND X.categoryID=Z.categoryID
WHERE X.userID_FK=%d AND X.listID_FK=%d
ORDER BY Z.categoryRank ASC
次を含む4番目のテーブル「D」があります。
-------------------------------
id_FK userID_FK vote
-------------------------------
ここで(id_FK, userID_FK)
ペアは PK です。
最初のクエリによって返されたそれぞれX.id
のテーブルには、複数のエントリが含まれている可能性がありD
ます。通常、返された行ごとに、投票数をカウントするために、次id
のようなクエリを記述します。
SELECT SUM(vote) FROM D WHERE `id`=%d
O(n)
現在のスキームでは実行時間がかかるため、これら 2 つのクエリを 1 つのクエリに最適化できるかどうか疑問に思っています。n
最初のクエリによって返される結果の数です。