-1
Это должна быть довольно регулярная операция: при получении записей из таблицы в БД мне нужно, чтобы они упорядочивались по убыванию даты создания. Но если я использую ключ AUTOINCREMENT, я могу также заказать по убыванию значения ключа.Заказать по дате времени DESC или заказать по основному ключу DESC?
Мой вопрос: что лучше?
- Какова эффективность, я знаю, что первичные ключи и поля данных используют разные типы индексов, которые эффективнее?
- Всегда ли они возвращают тот же результат? Используется ли клавиша AUTO-INCREMENT, когда она достигает максимума?
В PostgreSQL нет полей 'AUTO_INCREMENT'. Я предполагаю, что вы имеете в виду «SERIAL», который является просто «INTEGER» с дефолтом? Кроме того, что заставляет вас думать, что они используют разные типы индексов? Оба являются только индексами b-tree. Если это «ПЕРВИЧНЫЙ КЛЮЧ», то это будет индекс «УНИКАЛЬНЫЙ», но они структурно одинаковы. –
@CraigRinger Свертывает ли ключи SERIAL? Это что-то, о чем мне нужно беспокоиться? – NeoWang
Они не обертываются. Тем не менее, нет гарантии, что упорядочение строк будет одинаковым на основе timestamp vs сгенерированного ключа, особенно если вы используете 'current_timestamp' вместо' clock_timestamp'. Если вы хотите заказать на основе нисходящего времени создания, закажите их на основе нисходящего времени создания, а не ключа. –