Проверяет ли сервер sql наличие дубликата GUID при вставке? - PullRequest
2 голосов
/ 10 мая 2009

При вставке guid в качестве первичного ключа сервер БД просматривает каждую строку, чтобы убедиться, что дубликатов нет, или он просто предполагает, что дублирование невозможно или очень маловероятно?

с помощью int сервер БД может просто увеличивать ключ, но не в случае с GUID

Ответы [ 3 ]

5 голосов
/ 10 мая 2009

Это ответственность за базы данных, если вы скажете, что столбец является первичным ключом.

На данный момент вам не о чем беспокоиться, пусть база данных позаботится об этом за вас.

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

1 голос
/ 10 мая 2009

Все первичные ключи являются уникальными. Таким образом, сервер отвечает за проверку того, что две строки не имеют одинаковый первичный ключ. Это верно, если первичным ключом является int, varchar, guid, что угодно. Как проверяется ограничение уникальности в зависимости от реализации. По сути, не позволяйте этому беспокоить вас, если только вы не показали, что он является барьером для производительности.

Всегда делайте профиль, прежде чем беспокоиться о производительности.

0 голосов
/ 10 мая 2009

Я думаю, только если это первичный ключ или уникальный ключ

Но, как я знаю, GUID уникальны.

...