Редът на колоните имаше голямо влияние върху производителността на някои от базите данни, които съм настроил, обхващащи Sql Server, Oracle и MySQL. Тази публикация има добри правила :
- Първо колони с първичен ключ
- Следващи колони с външни ключове.
- Следващи колони за често търсене
- Често актуализирани колони по-късно
- Колоните с нулеви стойности са последни.
- Най-малко използвани колони с нулеви стойности след по-често използвани колони с нулеви стойности
Пример за разлика в производителността е търсенето в индекс. Машината на базата данни намира ред въз основа на някои условия в индекса и получава обратно адрес на ред. Сега кажете, че търсите SomeValue и то е в тази таблица:
SomeId int,
SomeString varchar(100),
SomeValue int
Двигателят трябва да отгатне откъде започва SomeValue, защото SomeString има неизвестна дължина. Въпреки това, ако промените реда на:
SomeId int,
SomeValue int,
SomeString varchar(100)
Сега двигателят знае, че SomeValue може да бъде намерен 4 байта след началото на реда. Така че реда на колоните може да окаже значително влияние върху производителността.
РЕДАКТИРАНЕ:Sql Server 2005 съхранява полета с фиксирана дължина в началото на реда. И всеки ред има препратка към началото на varchar. Това напълно отрича ефекта, който изброих по-горе. Така че за последните бази данни редът на колоните вече няма никакво влияние.