假设我有以下代码,它可以生成50,000个行:
SELECT photoID FROM photoSearch WHERE photoID BETWEEN 1 AND 50000;
我打算对刚刚返回的那些照片ID运行这个查询。
SELECT COUNT(people) AS totalPeople, people
FROM people
INNER JOIN photopeople ON photoPeople.peopleID = people.PeopleID
WHERE photoid IN ('ID's from results')
GROUP BY people
ORDER BY totalPeople DESC
但是,我从其他人和资源中了解到,在有100,000个以上的photoID时,使用IN子句性能不佳。
将顶部查询的photoID存储在另一个表(resultsTbl)或非常长的字符串中是否是一个好主意?如果是,我应该使用连接还是子查询来查询这些ID(在底部查询中),而不是使用IN?或者...是否有其他方法可以在保持性能的前提下完成工作?
对此的任何帮助都将不胜感激。