Kom ihåg mig?
Home Menu

Menu


SQL: Hur selecta när en lista med id:n är given

 
Ämnesverktyg Visningsalternativ
Oläst 2007-09-28, 21:43 #11
andi andi är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 344
andi andi är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 344
Kan detta funka?


SELECT ID, Title, FIND_IN_SET(id, '2343, 4352, 6543, 3245') as sort_column
FROM products
ORDER BY sort_column
andi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-10-01, 12:15 #12
swans avatar
swan swan är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 216
swan swan är inte uppkopplad
Medlem
swans avatar
 
Reg.datum: Oct 2004
Inlägg: 216
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...
swan är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-10-01, 15:10 #13
andi andi är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 344
andi andi är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 344
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"
andi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-10-01, 15:14 #14
swans avatar
swan swan är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 216
swan swan är inte uppkopplad
Medlem
swans avatar
 
Reg.datum: Oct 2004
Inlägg: 216
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.
swan är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


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

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