Det spelar verkligen ingen roll där kolumnen är fysiskt sedan select
låter dig ange i vilken ordning (logiskt) de hämtas.
Och om du använder välj *
som inte låter dig specificera ordningen, det borde du förmodligen inte vara. Det finns värdefulla få situationer där du borde göra det (DB-analysverktyg, till exempel), för det mesta är det bättre att välja de enskilda kolumner du vill ha, även om du vill ha dem alla. Detta gör att du snabbt kan fånga schemaändringar så att du kan anpassa dina program till dem.
I vilket fall som helst ger SQL själv inga garantier om i vilken ordning kolumner returneras om du inte uttryckligen lista dem. välj *
kan ge dig dem i ordningsföljd idag och alfabetisk ordning imorgon. Även om en viss implementering tillåter dig att göra det (genom att skapa en ny tabell med kolumnen på "rätt" plats och kopiera data över, eller tillhandahålla ett SQL-tillägg som alter table T infoga kolumn C1 före C2 ), skulle jag avråda från det. Den kommer inte att vara portabel till andra implementeringar och jag föredrar att ha min kod så portabel som möjligt.
Dessutom, utöver vad du kan specificera i SQL, bör ett DBMS kunna kontrollera hur fullständigt den lagrar data. Det kan vara så att din primära nyckel är en sammansättning av den sjunde och fyrtioandra kolumnen och det kan vara mer effektivt att ha dem längst fram i de fysiska posterna.