varchar (255) проти tinytext / tinyblob та varchar (65535) проти blob / text


92

За визначенням:

VARCHAR: Діапазон довжини становить від 1 до 255 символів. Значення VARCHAR сортуються та порівнюються з урахуванням регістру, якщо не вказано ключове слово BINARY. x + 1 байт
TINYBLOB, TINYTEXT: стовпець BLOB або TEXT з максимальною довжиною 255 (2 ^ 8 - 1) символів x + 1 байт

Отже, виходячи з цього, я створюю таку таблицю:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Або краще створити varchar або tinytext і чому ?

Чи однаково для:

VARCHAR: Діапазон довжини> 255 символів. Значення VARCHAR сортуються та порівнюються з урахуванням регістру, якщо не вказано ключове слово BINARY. x + 2 байти
BLOB, TEXT BLOB або TEXT стовпець з максимальною довжиною 65535 (2 ^ 16 - 1) символів x + 2 байта


VARCHAR потребує менших витрат пам'яті, але вони, як правило, будуть повністю зчитуватися в пам'яті, тому в кінці VARCHAR все одно може використовувати більше пам'яті. Вони обидва різні. Ви використовуєте BLOB для зберігання двійкових даних, таких як зображення, аудіо та інші мультимедійні дані. і VARCHAR для зберігання тексту будь-якого розміру до межі.
Книга Зевса

Відповіді:


10

У цьому випадку varcharце краще.

Зверніть увагу, що це varcharможе бути від 1 до 65535 символів.

Значеннями у стовпцях VARCHAR є рядки змінної довжини. Довжину можна вказати як значення від 0 до 255 до MySQL 5.0.3 та від 0 до 65 535 у 5.0.3 та пізніших версіях. Ефективна максимальна довжина VARCHAR у MySQL 5.0.3 та пізніших версіях залежить від максимального розміру рядка (65 535 байт, який розподіляється між усіма стовпцями) та використовуваного набору символів. Див. Розділ E.7.4, “Обмеження кількості стовпців та розмірів рядків”.

Краплі зберігаються в окремому розділі файлу.
Вони потребують додаткового читання файлів для включення в дані.
З цієї причини varchar отримується набагато швидше.

Якщо у вас велика крапля, до якої ви отримуєте доступ нечасто, ніж крапля має більше сенсу.
Зберігання даних BLOB в окремому (частині) файлу дозволяє зменшити ваш основний файл даних і, отже, швидше отримати його.


Чи краще це залежить, залежить від ваших схем доступу до даних.
Michael Mior

1
Який окремий файл це може бути?
glglgl

1
Краплі не зберігаються в окремому файлі. Але вони зберігаються в окремому фізичному місці від решти стовпців.
Michael Mior

1
Зауважте, що це залежить не тільки від частоти доступу, але й від того, які операції виконуються з даними. Наприклад, будь-який запит, що вимагає сканування таблиці (що, як правило, погано в будь-якому випадку), але не стовпець тексту, буде погіршуватися більшим обсягом сканованих даних.
Michael Mior

1
Я також підозрюю, що файлові сорти, які не використовують цей стовпець, можуть бути більш ефективними, якщо дані зберігаються поза сторінкою, хоча я не впевнений, що оптимізатор запитів є досить розумним, щоб не витягувати ці дані.
Michael Mior
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.