Я добавил столбец IDENTITY
в существующую таблицу в SQL Server 2012. Ожидаемые числа, которые должны быть сгенерированы в порядке кластеризованного индекса (несекретный GUID), но, к моему удивлению, они были сгенерированы в порядке одного из индексов который даже не уникален, а также по совпадению точно так, как я хотел!Новый столбец IDENTITY на существующей таблице - какой порядок?
Может ли это объяснить это? Вот подробности таблицы:
id - guid (non-sequential), clustered index, primary key
eventdate - bigint (unix date), not null, non-unique index
more columns, some indexed, all indexes non-unique
значения Удостоверения получили назначенные в порядке eventdate
. Я даже нашел несколько примеров, когда несколько строк имели одинаковые eventdate
, и у них всегда были последовательные идентификационные номера.
Спасибо, Владимир. Я действительно знал, что личный заказ не гарантирован - отсюда неожиданность, когда я добавлял и удалял столбец несколько раз, и каждый раз получал тот же неожиданный результат. Также я проверил каждую строку - я запустил запрос, который для каждой строки пытается найти другую строку, где идентификатор больше, а eventdate меньше. Запрос не дал никаких результатов. – Andrew
@ Андрей, «заказ не гарантирован» не означает, что он случайный - см. Отредактированный ответ. –