| FAQ |
| Kalender |
|
|
#1 | |||
|
||||
|
Medlem
|
Givet är en sorterad lista med produkt id:n (2343, 4352, 6543, 3245). Nu vill jag på ett snabbt sätt få fram produktnamnet för dessa id:n från en mysql databas. resultatet skall vara sorterat på samma sätt som i ursprungslistan. id är primärnyckel (och har därmed ett unikt index).
Vilket är snabbast? 1) loopa igenom listan och göra en select för varje produkt. dvs fyra (4) selects, en för varje produkt. Exempel: "SELECT ID, TITLE FROM PRODUCTS WHERE ID = 3243" 2) en (1) select där (id = 2343 OR id = 4352 OR id = 6543 OR id = 3245) Exempel: "SELECT ID, TITLE FROM PRODUCTS WHERE (ID = 2343 OR ID = 4352 OR ID = 6543 OR ID = 3245)" 3) annat? Det som är viktigt är alltså att det går så snabbt som möjligt och att listan är sorterad enligt ursprungslistan. |
|||
|
|
Svara med citat
|
|
|
#2 | |||
|
||||
|
Flitig postare
|
Kod:
SELECT ID, Title FROM Products WHERE ID IN (2343,4352,6543,3245) |
|||
|
|
Svara med citat
|
|
|
#3 | |||
|
||||
|
Medlem
|
Tack! Det skall jag prova!
Får man resultetet i "rätt" ordning? |
|||
|
|
Svara med citat
|
|
|
#4 | |||
|
||||
|
Flitig postare
|
Beror på vilken ordning du vill ha!
Du kan ju använda dig av en Order BY värde. Eller om du inte använder det så Har du antagligen ett fysiskt index på tabellen och då är ordningen på de fysiska datasidorna redan fastställda. |
|||
|
|
Svara med citat
|
|
|
#5 | ||
|
|||
|
Medlem
|
Var kommer listan med id-nummer från? Om listan kommer från databasen så kan du ju använda en subquery istället för att skriva statiska värden.
|
||
|
|
Svara med citat
|
|
|
#6 | |||
|
||||
|
Medlem
|
Listan kommer från användaren så jag kan inte använda mig av order by. Men om IN inte returnerar i samma värde så får jag väl försöka lösa det på något annat sätt.
|
|||
|
|
Svara med citat
|
|
|
#7 | ||
|
|||
|
Mycket flitig postare
|
Varför skulle du inte kunna använda ORDER BY bara för att listan kommer från användaren?
Kod:
SELECT ID, Title FROM Products WHERE ID IN (2343,4352,6543,3245) ORDER BY ID |
||
|
|
Svara med citat
|
|
|
#8 | |||
|
||||
|
Medlem
|
jo - jag vill alltså att den ursprungliga sorteringen skall finnas kvar. sorterar jag på ID så får jag 2343,3245,4352,6543 - dvs fel ordning.
|
|||
|
|
Svara med citat
|
|
|
#9 | ||
|
|||
|
Mycket flitig postare
|
Då missuppfattade jag dig. Antagligen gör du det lättast i php eller vilket språk du nu använder.
|
||
|
|
Svara med citat
|
|
|
#10 | |||
|
||||
|
Medlem
|
Så det snabbaste sättet är alltså att göra
Citat:
|
|||
|
|
Svara med citat
|
| Svara |
| Ämnesverktyg | |
| Visningsalternativ | |
|
|