За MySQL в документації , існує чотири типи TEXT:
- TINYTEXT
- ТЕКСТ
- MEDIUMTEXT
- ДОВГОТЕКСТ
Яка максимальна довжина, яку я можу зберігати у стовпці кожного типу даних, припускаючи, що кодування символів є UTF-8?
За MySQL в документації , існує чотири типи TEXT:
Яка максимальна довжина, яку я можу зберігати у стовпці кожного типу даних, припускаючи, що кодування символів є UTF-8?
Відповіді:
З документації :
Тип | Максимальна довжина ----------- + ------------------------------------- TINYTEXT | 255 (2 8 -1) байт ТЕКСТ | 65,535 (2 16 -1) байт = 64 KiB MEDIUMTEXT | 16,777,215 (2 24 −1) байт = 16 МіБ ДОВГОТЕКСТ | 4,294,967,295 (2 32 −1) байт = 4 ГіБ
Зауважте, що кількість символів, які можна зберегти у вашому стовпці, залежатиме від кодування символів .
A TEXT column with a maximum length of 255 (28 – 1) characters. The effective maximum length is less if the value contains multi-byte characters.
Дивіться відповідь Анкана для більш детальної інформації.
Розширення тієї самої відповіді
ЦЬОГО СТОЛИЧНА ОЦІНКА ТАБЛИЦЯ ДЛЯ ШВИДКІХ РІШЕНЬ!
хх
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21,845 | 65,535 | 4,854.44 - 14,563.33
MEDIUMTEXT | 5,592,415 | 16,777,215 | 1,242,758.8 - 3,728,270
LONGTEXT | 1,431,655,765 | 4,294,967,295 | 318,145,725.5 - 954,437,176.6
Також зверніться до відповіді Кріса V: https://stackoverflow.com/a/35785869/1881812
TINYTEXT
підраховує 1 байт + 8 байт проти розміру запису, тоді як VARCHAR(255)
вважає від 1 байта + 255 байт до 2 байта + 1020 байт (4 байти UTF-8 символів) проти розміру запису.
Виникаючи перед завданням @ Ankan-Zerob, це моя оцінка максимальної довжини, яка може бути збережена у кожному типі тексту, виміряному словами :
Type | Bytes | English words | Multi-byte words
-----------+---------------+---------------+-----------------
TINYTEXT | 255 | ±44 | ±23
TEXT | 65,535 | ±11,000 | ±5,900
MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000
LONGTEXT | 4,294,967,295 | ±740,000,000 | ±380,000,000
В англійській мові 4,8 букви на кожне слово є, мабуть, хорошим середнім показником (наприклад, norvig.com/mayzner.html ), хоча довжина слів залежить від домену (наприклад, розмовна мова проти наукових робіт), тому немає сенсу бути занадто точним. Англійська мова - це переважно однобайтові символи ASCII, з дуже випадковими багатобайтовими символами, настільки близькими до одного байта за буквою. Для міжсловних пробілів повинен бути дозволений додатковий символ, тому я округлюється до 5.8 байтів за кожне слово. Мови з великою кількістю наголосів, такі як, наприклад, польська, зберігають трохи менше слів, як, наприклад, німецька з довшими словами.
Мови, для яких потрібні багатобайтові символи, такі як грецька, арабська, іврит, хінді, тайська та ін., Зазвичай потребують двох байт на символ у UTF-8. Вгадавши дико по 5 букв на слово, я округлюється від 11 байтів за слово.
Сценарії CJK (Ханзі, Канджі, Хірагана, Катакана тощо) я нічого не знаю; Я вважаю, що символи в основному вимагають 3 байти в UTF-8, і (з масовим спрощенням), можливо, вони вважають, що вони використовуватимуть близько 2 символів на слово, тож вони опиняться десь між двома іншими. (Сценарії CJK, швидше за все, потребуватимуть менше місця, використовуючи UTF-16, залежно).
Це, звичайно, ігнорування накладних витрат тощо.