Aktualizacja:
W programie MySQL
moż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 Oracle
końcowe NULL
kolumny nie zajmują miejsca, dlatego zawsze należy umieszczać je na końcu tabeli.
Również w Oracle
i wSQL Server
w przypadku dużego rzędu ma ROW CHAINING
moż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 CHAINING
formacieOracle
:
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 @Andomar
odpowiedź .
Odpowiedział to samo, ale wydaje się, że bez powodu został odrzucony.