Casper-SC
@Casper-SC
Программист (.NET)

Имеет ли смысл в MySQL создавать отдельную таблицу для текстовых данных?

CREATE TABLE analytics.events (
  AnalyticsEventId bigint(20) NOT NULL AUTO_INCREMENT,
  Data text DEFAULT NULL,
  EventTime timestamp NOT NULL,
  ExternalUserId int(11) NOT NULL,
  EventTypeId int(11) NOT NULL,
  PRIMARY KEY (AnalyticsEventId)
)
ENGINE = INNODB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_0900_ai_ci;

ALTER TABLE analytics.events
ADD INDEX IX_Events_EventTypeId (EventTypeId);

ALTER TABLE analytics.events
ADD INDEX IX_Events_ExternalUserId (ExternalUserId);

ALTER TABLE analytics.events
ADD CONSTRAINT FK_Events_EventTypeInfo_EventTypeId FOREIGN KEY (EventTypeId)
REFERENCES analytics.eventtypeinfo (eventtypeinfoid);

ALTER TABLE analytics.events
ADD CONSTRAINT FK_Events_Users_ExternalUserId FOREIGN KEY (ExternalUserId)
REFERENCES analytics.users (externaluserid);


Вот в колонке "Data text" может данных не быть вовсе, либо там будет огромный JSON. Либо просто короткое произвольное сообщение. Вот и думаю, а имеет ли смысл создавать отдельную таблицу, которая будет содержать эти данные. Отразится ли это на скорости поиска и извлечения информации? Это конечно я могу всё проверить, но я был бы не против послушать мнение тех, кто с этим много работал или просто знает.

Огромный JSON - 5000 строк, если его отформатировать.
Или 141 000 символов.
  • Вопрос задан
  • 1407 просмотров
Решения вопроса 2
PageAuditRU
@PageAuditRU
Senior SEO Анализатор
Если будете делать выборку и джоины строго по индексам, то не повлияет. Как только лопухнётесь, то можете словить высокую нагрузку на дисковую систему.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Движку БД безразлично, а вы запутаетесь. Лучше не надо
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы