Aktualizacja:
W programie MySQLmoże istnieć powód, aby to zrobić.
Ponieważ zmienne typy danych (takie jak VARCHAR) są przechowywane ze zmiennymi długościami w InnoDB, silnik bazy danych powinien przeszukać wszystkie poprzednie kolumny w każdym wierszu, aby znaleźć przesunięcie podanego.
W przypadku kolumn wpływ może sięgać nawet 17%20 .
Zobacz ten wpis na moim blogu, aby uzyskać więcej szczegółów:
W programie Oraclekońcowe NULLkolumny nie zajmują miejsca, dlatego zawsze należy umieszczać je na końcu tabeli.
Również w Oraclei wSQL Server w przypadku dużego rzędu ma ROW CHAININGmoże wystąpić.
ROW CHANING polega na dzieleniu wiersza, który nie mieści się w jednym bloku i obejmowaniu go przez wiele bloków, połączonych połączoną listą.
Odczytanie kolumn końcowych, które nie pasowały do pierwszego bloku, będzie wymagało przejścia przez połączoną listę, co spowoduje dodatkowe I/O operację.
Zobacz tę stronę, aby zapoznać się z ilustracją w ROW CHAININGformacieOracle :
Dlatego warto umieścić kolumny, których często używasz, na początku tabeli, a kolumny, których nie używasz często, lub kolumny, które zwykle są NULL, na końcu tabeli.
Ważna uwaga:
Jeśli podoba Ci się ta odpowiedź i chcesz na nią zagłosować, również zagłosuj na @Andomarodpowiedź .
Odpowiedział to samo, ale wydaje się, że bez powodu został odrzucony.