Pořadí sloupců mělo velký dopad na výkon u některých databází, které jsem vyladil, včetně Sql Server, Oracle a MySQL. Tento příspěvek má dobrá pravidla :
- Sloupce primárního klíče jako první
- Následují sloupce cizího klíče.
- Další často vyhledávané sloupce
- Později často aktualizované sloupce
- Sloupce s možnou hodnotou Null jsou poslední.
- Nejméně používané sloupce s možnou hodnotou Null po častěji používaných sloupcích s možností hodnoty Null
Příkladem rozdílu ve výkonu je vyhledávání v indexu. Databázový stroj najde řádek na základě určitých podmínek v indexu a získá zpět adresu řádku. Nyní řekněte, že hledáte SomeValue, a je v této tabulce:
SomeId int,
SomeString varchar(100),
SomeValue int
Engine musí uhodnout, kde začíná SomeValue, protože SomeString má neznámou délku. Pokud však změníte objednávku na:
SomeId int,
SomeValue int,
SomeString varchar(100)
Nyní engine ví, že SomeValue lze nalézt 4 bajty po začátku řádku. Pořadí sloupců tedy může mít značný dopad na výkon.
UPRAVIT:SQL Server 2005 ukládá pole pevné délky na začátek řádku. A každý řádek má odkaz na začátek varcharu. To zcela neguje efekt, který jsem uvedl výše. Takže u nedávných databází již nemá pořadí sloupců žádný vliv.