2013-07-29 2 views
2

Как говорится в вопросе, каковы недостатки использования NewSequentialID в качестве значения по умолчанию таблицы vs NewID()? Очевидным преимуществом является то, что он не будет фрагментировать наш индекс.Есть ли недостатки в использовании NewSequentialID?

Есть ли какая-либо озабоченность, когда-либо превышающая последовательность?

+2

Ну, например, он по-прежнему очень широкий ключ по сравнению, скажем, INT. И вы потеряли одно из прелестей, что значение относительно случайное и не предсказуемое. Каковы преимущества, которые вы создали в пользу использования GUID вообще (независимо от фрагментации)? –

+1

Если вы уже знаете аргументы int/big_int vs GUID ..... единственным «недостатком» использования NewSequentialID является то, что кто-то может угадать GUID. Например, если у вас был webapp, который сказал /EmployeeEdit.aspx?EmployeeKey=123...., ваш конечный пользователь может «угадать» /EmployeeEdit.aspx?EmployeeKey=124. То же самое можно сделать и с NewSequentialID ... – granadaCoder

+0

Другим важным преимуществом является то, что вы получаете возможность сортировки по дате, созданной (если это важно для вас), которую вы, возможно, не сможете получить даже с колонкой «CreateDate». –

ответ

0

Я не вижу, как действительно значение по умолчанию для поля может быть недостатком.

Если вы хотите управлять идентификаторами некоторых записей, прежде чем вставлять их, может быть полезно использовать NEWID() вместо стандартного идентификатора по умолчанию (чтобы вы могли генерировать записи и их ассоциации до того, как вы взаимодействуете с базой данных, и вам не придется запрашивать его позже, чтобы вернуть идентификаторы). Хотя два не являются взаимоисключающими ...

Как granadaCoder сказал, последовательный ID можно сделать вывод, но IMO выгода настолько велика в плане производительности и технического обслуживания, что было бы ошибкой не использовать его ,

+0

Вы можете имитировать «последовательный» идентификатор «клиентской стороны» с помощью UuidCreateSequential. Http://www.pinvoke.net/default.aspx/rpcrt4.uuidcreatesequential. Как говорит Томас, преимущество руководства - вы можете «подключить» все ассоциации до отправка в базу данных ..... aka, вам не нужно ждать, пока столбцы IDENTITY вернут свои значения для вставки дочерних (FK) записей. Но (как упоминалось aaron-b), есть некоторые недостатки. Выбирай с умом. – granadaCoder

0

newsequesntialid не поддерживается Azure

+0

Не могли бы вы добавить ссылку для этой инструкции? –

+0

, пожалуйста, добавьте еще несколько объяснений или доказательств. – akshay

+1

http://social.msdn.microsoft.com/Forums/windowsazure/en-US/d73a7153-5476-44ca-a73f-e9b98ebf0764/newsequentialid-unsupported?forum=ssdsgetstarted – alexs

Смежные вопросы