To naprawdę nie ma znaczenia gdzie kolumna jest fizycznie od select
pozwoli Ci określić kolejność (logicznie), w jakiej są one pobierane.
A jeśli używasz wybierz *
co nie pozwala ci określić kolejności, prawdopodobnie nie powinieneś. Niewiele jest sytuacji, w których powinieneś to robić (na przykład narzędzia do analizy bazy danych), w większości przypadków lepiej jest wybrać poszczególne kolumny, które chcesz, nawet jeśli chcesz je wszystkie. Pozwala to na szybkie wychwycenie zmian w schemacie i dostosowanie do nich programów.
W każdym razie sam SQL nie gwarantuje kolejności, w jakiej kolumny są zwracane, chyba że wyraźnie Wymień je. wybierz *
może Ci je przekazać dziś w porządku porządkowym, jutro w porządku alfabetycznym. Nawet jeśli konkretna implementacja pozwala to zrobić (tworząc nową tabelę z kolumną we „właściwym” miejscu i kopiując dane w poprzek, lub dostarczając rozszerzenie SQL, takie jak alter table T wstaw kolumnę C1 przed C2 ), odradzałbym to. Nie będzie przenośny do innych implementacji i wolę, aby mój kod był tak przenośny, jak to tylko możliwe.
Ponadto, poza tym, co można określić w SQL, DBMS powinien być w stanie całkowicie kontrolować jak przechowuje dane. Może się zdarzyć, że Twój klucz podstawowy jest złożeniem siódmej i czterdziestej drugiej kolumny i może być bardziej wydajne, aby umieścić je na początku fizycznych rekordów.