-1
사진, 등급 (사람들이 투표 할 수 있음) 및 의견에 대한 정보가 들어있는 데이터베이스 (MySQL)가 있습니다. 그것이 얼마나 많은 등급을 가지고 있으며, 무엇 평균 평가 점수는 얼마나 많은 의견MySQL - 어떤 쿼리가 더 빠를 것입니까?
CREATE TABLE IF NOT EXISTS `Photos` (
`ID` INT NOT NULL AUTO_INCREMENT,
`Description` NVARCHAR(2000),
`Author` INT,
`Contest` INT,
`PhoneModel` NVARCHAR(200),
`PhotoThumbPath` NVARCHAR(2000),
`PhotoPath` NVARCHAR(2000),
`Date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`State` INT DEFAULT 1,
FOREIGN KEY (`Author`) REFERENCES `Users`(`ID`),
FOREIGN KEY (`Contest`) REFERENCES `Contests`(`ID`),
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `PhotoComments` (
`ID` INT NOT NULL AUTO_INCREMENT,
`Author` INT,
`Photo` INT,
`Comment` NVARCHAR(2000),
`Date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`ReplyTo` INT,
FOREIGN KEY (`Author`) REFERENCES `Users`(`ID`),
FOREIGN KEY (`Photo`) REFERENCES `Contests`(`ID`),
FOREIGN KEY (`ReplyTo`) REFERENCES `PhotoComments`(`ID`),
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `PhotoComments` (
`ID` INT NOT NULL AUTO_INCREMENT,
`Author` INT,
`Photo` INT,
`Comment` NVARCHAR(2000),
`Date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`ReplyTo` INT,
FOREIGN KEY (`Author`) REFERENCES `Users`(`ID`),
FOREIGN KEY (`Photo`) REFERENCES `Contests`(`ID`),
FOREIGN KEY (`ReplyTo`) REFERENCES `PhotoComments`(`ID`),
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
은 지금은 저를주기 위해 certaing 사진에 대한 데이터베이스를 물어보고 싶은. 빠른 것 그 방법
어느 하나를 하위 쿼리 3 쿼리 : 당신의 querys에
SELECT P.PhotoPath, P.Date, P.PhoneModel,
COUNT(DISTINCT C.ID) as CommentsCount,
COUNT(DISTINCT R.ID) as RatingsCount,
COALESCE(AVG(R.Rating), 0) as RatingsAvg
FROM Photos P
LEFT JOIN PhotoComments C ON C.Photo=P.ID
LEFT JOIN PhotoRatings R ON R.Photo=P.ID
WHERE P.ID=$photoID
GROUP BY P.ID