Длина полей базы данных для хранения данных с неизвестной и технически неограниченной длиной?

Я должен хранить DOI в базе данных MySQL. В справочнике написано:

Нет ограничений по длине имени DOI.

Пока что максимальная длина DOI в моих текущих данных составляет 78 символов. Какую длину поля вы бы порекомендовали, чтобы не тратить место для хранения и быть на безопасной стороне? В общем:

Как вы решаете проблему незнания максимальной длины входных данных, которые должны храниться в базе данных, учитывая пространство и эффективность транзакций?

РЕДАКТИРОВАТЬ

Есть эти две (упрощенные) таблицы document а также topic с отношением один ко многим:

CREATE TABLE document
(
  ID int(11) NOT NULL,
  DOI ??? NOT NULL,
  PRIMARY KEY (ID) 
);

CREATE TABLE topic
(
  ID int(11) NOT NULL,
  DocID int(11) NOT NULL,
  Name varchar(255) NOT NULL,
  PRIMARY KEY (ID),
  FOREIGN KEY (DocID) REFERENCES Document(ID), UNIQUE(DocID)
);

Я должен выполнить следующий (упрощенный) запрос статистики, возвращая общее значение ссылочных тематических категорий на документ (если есть ссылки):

SELECT COUNT(topic.Name) AS number, document.DOI
FROM document LEFT OUTER JOIN topic
ON document.ID = topic.DocID
GROUP BY document.DOI;

Используемый набор символов utf_8_general_ci,

2 ответа

TEXT а также VARCHAR может хранить 64 КБ. Если вы параноик, используйте LONGTEXT который допускает 4 ГБ, хотя если имена на самом деле длиннее, чем 64 КБ, то это действительно оскорбительный стандарт. VARCHAR(65535) Вероятно, разумное жилье.

поскольку VARCHAR переменной длины, тогда вы действительно платите только за дополнительное хранилище, если и когда оно используется. Ограничение ограничивает объем данных, которые теоретически можно поместить в поле.

Пространство не проблема; индексация может быть проблемой. Пожалуйста, предоставьте запросы, которым нужен индекс для этого столбца. Также предоставьте CHARACTER SET необходимо. С ними мы можем обсудить последствия различных срезов: 191, 255, 767, 3072 и т. Д.

Другие вопросы по тегам