hey you database people, i need some urgent help here if i can get it. i have this query that will only return members that user "1162828" hasnt already voted for. the reason behind this is so user "1162828" does vote on the same member more then once.
my problem is that it is slow and gets recored to my slow logs. anyone know why this might be slow?
my sql looks like this :
CREATE TABLE Votes (
VoteID mediumint(7) NOT NULL auto_increment,
MemberID mediumint(7) NOT NULL default '0',
VoterID mediumint(7) NOT NULL default '0',
Vote tinyint(2) NOT NULL default '10',
Date date NOT NULL default '0000-00-00',
PRIMARY KEY (VoteID),
KEY VDex (MemberID,VoterID),
KEY VDate (Date)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3871466 ;
my log report says stuff like this :
Time: 060411 13:43:32
Query_time: 4 Lock_time: 0 Rows_sent: 1 Rows_examined: 10963985
SELECT UserName, Photo, m.MemberID
FROM Members m
LEFT JOIN (SELECT MemberID FROM Votes WHERE VoterID=1162828) AS v USING(MemberID)
WHERE v.MemberID IS NULL
AND m.Public = 'Y'
ORDER BY RAND()
LIMIT 1;
anyone see what i might be doing wrong and have some suggestions?