Код: Выделить всё
CREATE TABLE messages (
id VARCHAR(36) NOT NULL PRIMARY KEY,
chat_id VARCHAR(36) NOT NULL,
author_id VARCHAR(36) NOT NULL,
content VARCHAR(500) character set utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
visible TINYINT NOT NULL DEFAULT 0,
request_id VARCHAR(128),
created_at BIGINT signed NOT NULL,
updated_at BIGINT signed NOT NULL,
UNIQUE INDEX messages_chat_id_created_at(chat_id, created_at DESC)
);
< /code>
Он имеет размер ~ 400 ГБ и ~ 700 миллионов строк. SELECT
*
FROM
messages
WHERE
chat_id = :chatId
AND created_at
Таблица постоянно растет, и, хотя в 90% случаев, которые извлекаются только самые последние данные, я должен держать старые сообщения в БД как из -за нашей политики удержания, так и для поддержки случаев, когда пользователи возвращаются к своим старым разговорам. 750 мс. < /P>
Index range scan on m using messages_chat_id_created_at, with index condition: ((m.chat_id = ?) and (m.created_at))
Rows returned: 10
Latency: 370.9 ms
Подробнее здесь: https://stackoverflow.com/questions/797 ... ry-latency