FAQ |
Kalender |
![]() |
#11 | ||
|
|||
Flitig postare
|
Kan detta funka?
SELECT ID, Title, FIND_IN_SET(id, '2343, 4352, 6543, 3245') as sort_column FROM products ORDER BY sort_column |
||
![]() |
![]() |
![]() |
#12 | |||
|
||||
Medlem
|
Citat:
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... |
|||
![]() |
![]() |
![]() |
#13 | ||
|
|||
Flitig postare
|
Citat:
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" |
||
![]() |
![]() |
![]() |
#14 | |||
|
||||
Medlem
|
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. |
|||
![]() |
![]() |
Svara |
|
|