Я хочу создать первичный ключ для своей таблицы с управлением версиями строк. Моя таблица содержит 2 основных поля: ID и Timestamp, а также множество других полей. Для уникального «ID» я хочу сохранить предыдущие версии записи. Следовательно, я создаю первичный ключ для таблицы, которая будет комбинацией полей идентификатора и метки времени. Следовательно, чтобы увидеть все версии конкретного идентификатора, я могу дать,
Select * from table_name where ID=<ID_value>
Чтобы вернуть самую последнюю версию идентификатора, я могу использовать
Select * from table_name where ID=<ID_value> ORDER BY timestamp desc
и получить первый элемент. Мой вопрос заключается в том, будет ли этот запрос эффективным и будет ли он выполняться в O (1) вместо сканирования всей таблицы, чтобы получить все записи, соответствующие одному и тому же идентификатору, учитывая, что поле идентификатора было частью полей первичного ключа? В идеале, чтобы получить результат за O(1), я должен был указать весь первичный ключ. Если ему нужно выполнить сканирование всей таблицы, то как еще я могу разработать свой первичный ключ, чтобы выполнить этот запрос за O (1)?
Спасибо, Шрирам