Mise à jour :
En MySQL
il peut y avoir une raison de le faire.
Puisque les types de données variables (comme VARCHAR
) sont stockés avec des longueurs variables dans InnoDB
le moteur de base de données doit parcourir toutes les colonnes précédentes de chaque ligne pour trouver le décalage de la colonne donnée.
L'impact peut être aussi important que 17% pour 20
colonnes.
Voir cet article dans mon blog pour plus de détails :
En Oracle
, suivi de NULL
Les colonnes ne consomment pas d'espace, c'est pourquoi vous devez toujours les placer en fin de tableau.
Également dans Oracle
et en SQL Server
dans le cas d'une grande rangée, une ROW CHAINING
peut se produire.
ROW CHANING
consiste à diviser une ligne qui ne tient pas dans un seul bloc et à la répartir sur plusieurs blocs, reliés par une liste chaînée.
La lecture des colonnes de queue qui ne rentrent pas dans le premier bloc nécessitera de parcourir la liste chaînée, ce qui entraînera un temps de réponse supplémentaire. I/O
fonctionnement.
Ver cette page pour illustrer ROW CHAINING
sur Oracle
:
C'est pourquoi vous devriez placer les colonnes que vous utilisez souvent au début du tableau, et les colonnes que vous n'utilisez pas souvent, ou les colonnes qui ont tendance à être NULL
jusqu'au bout de la table.
Remarque importante :
Si vous aimez cette réponse et souhaitez voter pour elle, veuillez également voter pour @Andomar
Réponse de la Commission .
Il a répondu à la même chose, mais semble avoir été descendu sans raison.