[英]Extremely slow PHP mySQL query on movies database
我有一个php文件,用于查询mySql数据库,该数据库在一个表上设置了电影,在另一个表上设置了movieRatings。 我想计算特定电影具有的“ 5星”,“ 4星”等评分。 我的查询有效,但是它非常慢,因为我意识到要查找的每个电影都要遍历整个movieRatings表5次。
我的查询:
$sql = "SELECT *
FROM MOVIE_INFO,
(SELECT count(ratingValue) as star5 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 5 ) SUB,
(SELECT count(ratingValue) as star4 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 4 ) SUB1,
(SELECT count(ratingValue) as star3 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 3 ) SUB2,
(SELECT count(ratingValue) as star2 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 2 ) SUB3,
(SELECT count(ratingValue) as star1 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 1 ) SUB4
WHERE movieID = $b[0]";
我认为,如果可以一次从特定电影的电影分级中提取子集,它将极大地加快它的速度,但是我不记得该怎么做。
您正在执行多个子选择。 相反,请尝试进行分组查询,例如
SELECT ratingValue, COUNT(ratingValue) FROM MOVIE_INFO
WHERE movieID = $b[0]
GROUP BY ratingValue
每个星级类别将返回一行。 第一列将是等级本身(例如1),第二列将是具有该星数的等级数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.