sql >> Database teknologi >  >> RDS >> Mysql

Er der nogen grund til at bekymre sig om kolonnerækkefølgen i en tabel?

Kolonnerækkefølgen havde en stor ydeevnepåvirkning på nogle af de databaser, jeg har tunet, og spænder over SQL Server, Oracle og MySQL. Dette indlæg har gode tommelfingerregler :

  • Primære nøglekolonner først
  • Fremmednøglekolonner næste.
  • Ofte søgte kolonner næste
  • Ofte opdaterede kolonner senere
  • Nullable kolonner sidst.
  • Mindst brugte nullbare kolonner efter hyppigere brugte nullable kolonner

Et eksempel på forskel i ydeevne er et indeksopslag. Databasemotoren finder en række baseret på nogle forhold i indekset og får en rækkeadresse tilbage. Sig nu, at du leder efter SomeValue, og det er i denne tabel:

 SomeId int,
 SomeString varchar(100),
 SomeValue int

Motoren skal gætte, hvor SomeValue starter, fordi SomeString har en ukendt længde. Men hvis du ændrer rækkefølgen til:

 SomeId int,
 SomeValue int,
 SomeString varchar(100)

Nu ved motoren, at SomeValue kan findes 4 bytes efter starten af ​​rækken. Så kolonnerækkefølge kan have en betydelig effekt på ydeevnen.

EDIT:SQL Server 2005 gemmer felter med fast længde i begyndelsen af ​​rækken. Og hver række har en reference til starten af ​​en varchar. Dette negerer fuldstændig den effekt, jeg har nævnt ovenfor. Så for nyere databaser har kolonnerækkefølgen ikke længere nogen indflydelse.



  1. Bedste databasesoftware til udviklere (2022-udgaven)

  2. MySQL #1140 - Blanding af GROUP-kolonner

  3. Introduktion til HDFS | Hvad er HDFS, og hvordan virker det?

  4. SQL Server Backup Check