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 1,
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
Есть быстрая победа, которую я могу применить, чтобы немного ускорить вещи?
У меня есть следующая таблица в моем mysql db: < /p> [code]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 1, 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 [/code] Есть быстрая победа, которую я могу применить, чтобы немного ускорить вещи?