Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy jest jakiś powód, aby martwić się o kolejność kolumn w tabeli?

Kolejność kolumn miała duży wpływ na wydajność niektórych dostrojonych przeze mnie baz danych, obejmujących Sql Server, Oracle i MySQL. Ten post ma dobre zasady :

  • Najpierw kolumny klucza głównego
  • Następne kolumny kluczy obcych.
  • Następnie często wyszukiwane kolumny
  • Często aktualizowane kolumny później
  • Kolumny dopuszczające wartość null są ostatnie.
  • Najmniej używane kolumny dopuszczające wartość null po częściej używanych kolumnach dopuszczających wartość null

Przykładem różnicy w wydajności jest wyszukiwanie indeksu. Aparat bazy danych znajduje wiersz na podstawie pewnych warunków w indeksie i zwraca adres wiersza. Teraz powiedz, że szukasz SomeValue i jest to w tej tabeli:

 SomeId int,
 SomeString varchar(100),
 SomeValue int

Silnik musi odgadnąć, gdzie zaczyna się SomeValue, ponieważ SomeString ma nieznaną długość. Jeśli jednak zmienisz kolejność na:

 SomeId int,
 SomeValue int,
 SomeString varchar(100)

Teraz silnik wie, że SomeValue można znaleźć 4 bajty po rozpoczęciu wiersza. Tak więc kolejność kolumn może mieć znaczny wpływ na wydajność.

EDYCJA:Sql Server 2005 przechowuje pola o stałej długości na początku wiersza. A każdy wiersz ma odniesienie do początku varchar. To całkowicie neguje efekt, który wymieniłem powyżej. Tak więc w przypadku najnowszych baz danych kolejność kolumn nie ma już żadnego wpływu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować MySQL na macOS

  2. MySQL - Jak sumować czasy?

  3. Jak mogę zaimportować duży (14 GB) plik zrzutu MySQL do nowej bazy danych MySQL?

  4. Jakie są różnice między INSERT i UPDATE w MySQL?

  5. Jak porównywać wydajność Moodle?