Mysql
 sql >> база данни >  >> RDS >> Mysql

Има ли причина да се притеснявате за реда на колоните в таблица?

Редът на колоните имаше голямо влияние върху производителността на някои от базите данни, които съм настроил, обхващащи 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. Това напълно отрича ефекта, който изброих по-горе. Така че за последните бази данни редът на колоните вече няма никакво влияние.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Балансиране на натоварването, съобразено с базата данни:Как да мигрираме от HAProxy към ProxySQL

  2. Изпълнението на MySQL израза отнема повече от минута

  3. MySQL - Как да сумираме пъти?

  4. Как да възстановя дъмп файл от mysqldump?

  5. brew инсталирайте mysql на macOS