PaceMedlem sedan juni 20015 947 inlägg
Vilket är egentligen "bäst" (dvs, snabbast och mest korrekt) att göra om man exempelvis vill hämta ett inlägg i ett forum + forumets titel:
- Hämta först forumets titel (SELECT titel FROM forum WHERE id = 1) och sedan hämta alla inlägg (SELECT användare, inlägg, blaha FROM inlägg WHERE id = 1).
- Hämta alla inläggen, med forumets titel "joinad" i select-frågan, så att forumets titel kommer med varje post.
Med metod 1 så hämtar man endast den datan man behöver med 2 st SQL frågor, medan man med metod 2 hämtar all data med endast 1 st fråga, men samtidigt får man med sig onödig information. Så till min fråga: vilket är rätt och snabbast?
Jörgen HPMedlem sedan feb. 20012 179 inlägg
men samtidigt får man med sig onödig information.
Varför får du onödig information? Du anger ju bara de fält i joinen du ska använda dig av, eller förstår jag din fråga fel?
PaceMedlem sedan juni 20015 947 inlägg
Man får med sig forumets titel flera gånger (tillsammans med varje post) om man använder sig av en join som jag beskrev i metod 2:
[red]namn på den som postade | inlägget | forumets titel[/red]
Pace | Lite text | Café webforum
Jörgen HP | Mer lite text | Café webforum
LarsG | Ännu mer lite text | Café webforum
Jörgen HPMedlem sedan feb. 20012 179 inlägg
Men det är ju knappast SQL-frågans fel. Vill du optimera lite så sparar du bara ett id för forumets titel i den tabellen och har:
forumets titel | forumid | forumbeskrivning
i egen tabell. Är ju dumt att laga samma data på flera ställen. :D
PaceMedlem sedan juni 20015 947 inlägg
Nej, det var inte så jag menade. Som jag skrev i första inlägget:
2. Hämta alla inläggen, med forumets titel "joinad" i select-frågan, så att forumets titel kommer med varje post.
spangoMedlem sedan juni 20006 147 inlägg
Jag röstar för två olika frågor, för det låter mer logiskt... men jag tror inte att det spelar någon större roll. Kanske gör det det om du hämtar Riktigt Många Poster på Samma Gång, eftersom det blir till att skyffla en hel del data. Du kan ju göra ett benchmarktest för att pröva :)