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

Когато имате поле TEXT в MySQL или PostgreSQL, трябва ли да го поставите в отделна таблица?

Не с PostgreSQL, от ръководството :

Така че колона с големи знаци (като TEXT или VARCHAR без определено ограничение за размер) се съхранява далеч от данните на основната таблица. И така, PostgreSQL има вградена оптимизация за „поставете го в отделна таблица“. Ако използвате PostgreSQL, подредете таблицата си разумно и оставете оформлението на данните на PostgreSQL.

Не знам как MySQL или други RDBM подреждат данните си.

Причината за тази оптимизация е, че базата данни обикновено съхранява данните за всеки ред в последователни блокове на диска, за да намали търсенето, когато редът трябва да бъде прочетен или актуализиран. Ако имате колона ТЕКСТ (или друг тип с променлива дължина) в ред, тогава размерът на реда е променлив, така че е необходима повече работа, за да преминете от ред на ред. Аналогия би била разликата между достъпа до нещо в свързан списък спрямо достъпа до масив; с свързан списък, трябва да четете три елемента един по един, за да стигнете до четвъртия, с масив просто компенсирате 3 * element_size байтове от началото и сте там на една стъпка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python MySql Insert не работи

  2. Има ли ограничения за дължината на низа в mysql?

  3. mySQL MATCH в множество таблици

  4. Актуализирайте една MySQL таблица със стойности от друга

  5. MySQL изхвърля в CSV текстови файлове с имена на колони в горната част?