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

varchar(20) и varchar(50) са еднакви?

MySQL предлага избор от машини за съхранение. Физическото съхранение на данни зависи от механизма за съхранение.

MyISAM съхранение на VARCHAR

В MyISAM VARCHAR s обикновено заемат само действителната дължина на низа плюс байт или два дължина. Това се прави практично от ограничението на дизайна на MyISAM за заключване на таблица, за разлика от възможността за заключване на редове. Последиците от производителността включват по-компактен профил на кеша, но също така и по-сложно (по-бавно) изчисляване на отместванията на записите.

(Всъщност MyISAM ви дава степен на избор между фиксиран размер на физически ред и променливи формати на таблицата с физически размер на редове в зависимост от типовете колони, срещащи се в цялата таблица. Появата на VARCHAR променя само метода по подразбиране, но наличието на TEXT blob сили VARCHAR s в същата таблица, за да използвате и метода с променлива дължина.)

Методът за физическо съхранение е особено важен при индексите, което е различна история от таблиците. MyISAM използва компресия на пространството за и двете CHAR и VARCHAR колони, което означава, че по-кратките данни заемат по-малко място в индекса и в двата случая.

InnoDB съхранение на VARCHAR

InnoDB, подобно на повечето други текущи релационни бази данни, използва по-сложен механизъм. VARCHAR колони, чиято максимална ширина е по-малка от 768 байта, ще се съхраняват на линия, като запазената стая съответства на тази максимална ширина. По-точно тук :

InnoDB в момента не извършва компресия на пространство в своите индекси, обратното на MyISAM, както е описано по-горе.

Обратно към въпроса

Всичко по-горе обаче е само детайл от внедряването, който може дори да се променя между версиите. Истинската разлика между CHAR и VARCHAR е семантичен, както и този между VARCHAR(20) и VARCHAR(50) . Като се гарантира, че няма начин да се съхранява низ от 30 знака в VARCHAR(20) , базата данни прави живота по-лесен и по-добре дефиниран за различни процесори и приложения, които се предполага, че интегрира в решение с предвидимо поведение. Това е голямата работа.

По отношение конкретно на личните имена, този въпрос може да ви даде някои практически насоки. Хората с пълни имена над 70 UTF-8 знака така или иначе са в беда.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Размерът на таблицата влияе ли върху производителността на INSERT?

  2. SQL присъединяването води до обект в codeigniter

  3. PHP mySQL - Можете ли да върнете свързан масив с числов индекс?

  4. mysql заявка за актуализиране на полето до max(field) + 1

  5. Има ли начин да се изчислят времевите разлики в MySQL с помощта на един избор