MSSQLで次のクエリがあります
SELECT TOP 50 CustomerID FROM Ratings
WHERE CustomerID != 915
AND MovieID IN (SELECT DISTINCT MovieID FROM Ratings WHERE CustomerID = 915)
GROUP BY CustomerID
ORDER BY count(*) DESC
超高速です。このようなサブクエリで使用しようとすると。
SELECT * FROM Ratings
WHERE MovieID = 1 AND
CustomerID IN (SELECT TOP 50 CustomerID FROM Ratings
WHERE CustomerID != 915
AND MovieID IN (SELECT DISTINCT MovieID FROM Ratings WHERE CustomerID = 915)
GROUP BY CustomerID
ORDER BY count(*) DESC)
なぜこれがとても遅いのか、そしてどうすればそれをスピードアップできるのかについてのアイデアはありますか?私の主キーは(MovieID-CustomerID)で、CustomerIDにインデックスを追加しました