Добрый день. Мне нужна консультация по архитектуре.
Короткая формулировка вопроса: При SELECT по первичному ключу имеет ли значение размер таблицы?
Подробное описание проблемы:
Есть таблица на 10 Гб.
|
---|
CREATE TABLE actions ( user_uni INT NOT NULL, project_id INT NOT NULL, action_time INT, status SMALLINT )
|
Первичный ключ составной: user_uni, project_id
Нужно постоянно проверять выполнил ли пользователь user_uni действие по проекту project_id.
Есть вариант разбить таблицу на две actions (1-2 ГБ) и actions_history (8-9 ГБ), где actions будет хранить только действия по актуальным проектам, а actions_history - действия по проектам, которые на данный момент закрыты.
Я не сомневался бы в правильности этого решения, но есть один нюанс: закрытый проект может быть открыт заново. В случае если проект будет открыт заново (а это происходит регулярно) нужно перенести данные из actions_history в actions, а это может быть от 1000 до 100000 строк. INSERT 100000 строк в одну таблицу и DELETE 100000 из другой таблицы существенная нагрузка.
Возникает вопрос: а имеет ли смысл разделение на две таблицы?
Спасибо за ваше внимание. Буду благодарен за любые советы.