sql >> Databáze >  >> RDS >> Mysql

Existuje nějaký důvod k obavám z pořadí sloupců v tabulce?

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.



  1. Nainstalujte webový server ve Windows XP s Apache2, PHP5 a MySQL4 – část 4

  2. Jak nastavit hodnotu pole složené proměnné pomocí dynamického SQL

  3. Případy použití pro SQL Server Příkaz MERGE:Synchronizace online a tabulek historie

  4. Jako cizí klíč použijte složený primární klíč