---
title: "Knas med select"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/93266-knas-med-select"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "K@llen"
published: "2003-12-22T21:43:21.000Z"
updated: "2003-12-30T12:23:44.000Z"
replies: 7
views: 261
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/93266-knas-med-select"
---

# Knas med select

## #1 — K@llen, 2003-12-22T21:43Z

```
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?

Permalänk: https://www.webforum.nu/p/93266

## #2 — K@llen, 2003-12-22T22:45Z

Lyckades nog lösa det själv. :D

```
		       
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
```

Permalänk: https://www.webforum.nu/p/1236221

## #3 — K@llen, 2003-12-28T18:29Z

Nu när jag börjat använda denna sql-fråga skarpt märker jag att den är ganska seg att köra. Finns det något sätt att skriva denna fråga effektivare?

Permalänk: https://www.webforum.nu/p/1237944

## #4 — LarsG, 2003-12-29T14:11Z

Det är nog mer intressant att se vilka index som finns och vad resultatet av explain säger.

Permalänk: https://www.webforum.nu/p/1238221

## #5 — K@llen, 2003-12-29T17:40Z

Okey, here we go... :)

**Index**
**forum_post**
Keyname \| Unique \| Field 
PRIMARY \| Yes \| messageId
topicId \| No \| topicId  
messageUid \| No \| messageUid  

**forum_topic**
Keyname \| Unique \| Field 
PRIMARY \| Yes \| id  
id \| No \| id    
topicId \| No \| topicId  
forumId \| No \| forumId   

**Profil**
AnvId

Och resultatet från explain:
<http://member.webforum.nu/K%40llen/mysqldump.gif>

Permalänk: https://www.webforum.nu/p/1238315

## #6 — LarsG, 2003-12-29T19:49Z

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.)

Permalänk: https://www.webforum.nu/p/1238384

## #7 — K@llen, 2003-12-29T22:56Z

Jo, så kan man ju göra. :) Ibland blir det nog effektivare med två frågor. Vad menar du med suspekt optimering?

Permalänk: https://www.webforum.nu/p/1238464

## #8 — K@llen, 2003-12-30T12:23Z

Det verkar vara snabbare med två frågor i detta fallet, tack LarsG! :)

Permalänk: https://www.webforum.nu/p/1238640

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/93266-knas-med-select
