WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   SQL: Hur selecta när en lista med id:n är given (https://www.wn.se/forum/showthread.php?t=23897)

andi 2007-09-28 21:43

Kan detta funka?


SELECT ID, Title, FIND_IN_SET(id, '2343, 4352, 6543, 3245') as sort_column
FROM products
ORDER BY sort_column

swan 2007-10-01 12:15

Citat:

Originally posted by andi@Sep 28 2007, 21:43
Kan detta funka?


SELECT ID, Title, FIND_IN_SET(id, '2343, 4352, 6543, 3245') as sort_column
FROM products
ORDER BY sort_column

Efter lite modifiering fick jag det att fungera. Det är viktigt att det inte är mellanslag i FIND_IN_SET.

SELECT ID, TITLE, FIND_IN_SET(ID, '2343,4352,6543,3245') as sort_column
FROM PRODUCTS
WHERE ID IN ('2343','4352','6543','3245')
ORDER BY sort_column

Frågan gick ganska snabbt att exekvera, men när jag körde EXPLAIN så står det "Using where; Using filesort". Tar jag bort FIND_IN_SET så försvinner "using filesort". Din lösning är annars väldigt bra - men jag hade helst sett att den inte använder filesort då det slöar ner frågan...

andi 2007-10-01 15:10

Citat:

Efter lite modifiering fick jag det att fungera. Det är viktigt att det inte är mellanslag i FIND_IN_SET.

SELECT ID, TITLE, FIND_IN_SET(ID, '2343,4352,6543,3245') as sort_column
FROM PRODUCTS
WHERE ID IN ('2343','4352','6543','3245')
ORDER BY sort_column


Fast behöver du den tredje raden? Kanske kan man kolla värdet av fältet sort_column, typ: "WHERE sort_column is not null" eller vad värdet nu blir på de rader som inte har sitt ID i ditt "SET"

swan 2007-10-01 15:14

Utan den tredje raden så måste mysql gå igenom alla kolumner i hela tabellen, det tar väldigt lång tid.

Som jag förstår det är den tredje raden väldigt bra. den gör att det går väldigt snabbt och använder sig dessutom av index.

det som gör att det går långsamt är FIND_IN_SET eftersom den måste använda sig av filsortering.


Alla tider är GMT +2. Klockan är nu 03:18.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson