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 символов.