SELECT fp.messageTime, fp.messageUid, fp.topicId, p.req_Username
FROM forum_post fp
INNER JOIN forum_topic ft
ON fp.topicId = ft.topicId
INNER JOIN Profil p
ON fp.messageUid = p.AnvId
WHERE ft.forumId = 11
ORDER BY fp.messageId DESC
LIMIT 1
mySQL skrev:
The SELECT would examine too many records and probably take a very long time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the SELECT is ok
Jag ser inget fel och fattar mig inte på felmeddelandet även om jag förstår vad där står. Någon som fattar vad felet kan vara?
SELECT fp.messageTime, fp.messageUid, fp.topicId, p.req_Username, max(fp.messageId) AS latest
FROM forum_topic ft
INNER JOIN forum_post fp
ON ft.topicId = fp.topicId
INNER JOIN Profil p
ON fp.messageUid = p.AnvId
WHERE ft.forumId = 11
GROUP BY fp.messageTime, fp.messageUid, fp.topicId, p.req_Username
ORDER BY latest DESC
LIMIT 1
Det kanske är bäst att dela upp detta i två delar då det verkar bli lite suspekt optimering.
select max(fp.messageid)
from forum_post fp join forum_topic ft
ON ft.topicId = fp.topicId
WHERE ft.forumId = 11
select fp.messageTime, fp.messageUid, fp.topicId, p.req_Username
FROM forum_post fp INNER JOIN Profil p
ON fp.messageUid = p.AnvId
where fp.messageid = <maxfpmessageid>
(Egentligen skulle man lägga den första frågan som en subselect.)