Я предлагаю вам никогда не рассматривать GUID. Одна из причин заключается в том, что в настоящее время у меня возникают проблемы с ними. Предположим, что если у вас есть миллионы пользователей, вам может потребоваться более высокая степень параллелизма, и Guids разрушит вашу жизнь при вставке и удалении, поскольку вы у них есть индекс, и по умолчанию это будет кластеризованный индекс, который означает, что при наличии кластеризованного индекса каждая вставка и удаление будут физически перемещать запись, и, кроме того, направляющие не являются последовательными, поэтому существует вероятность того, что каждая новая вставка будет иметь ноль. внизу или вверху страницы. поэтому общая операция вставки и удаления станет очень дорогой, и если вы удалите индекс, то ваши выборы станут дорогостоящими.
Особенно, если у вас несколько таблиц и между ними существуют отношения, не рассматривайте Guids как первичный ключ.
Существуют следующие два решения, которые я бы порекомендовал.
если вы можете создать составные ключи, которые будут идеальными, как если бы это было банковское программное обеспечение, тогда это может быть branchId, транзакция станет первичным ключом, где branchId - это идентификатор узла, вставляющего запись, а транзакция - автоматический номер в филиал, так что вы получите уникальность на всем пути.
если вышеупомянутое не то, что вы хотели бы сделать или рассматриваете, тогда вы можете использовать Guid в качестве уникального поля, но добавить номер автоинкремента в качестве первичного ключа, это поможет вам снизить общую стоимость, например, когда клиент (узел) ) отправляет данные с использованием (веб-службы) RPC, затем необходимо вставить запись в базу данных сервера, после чего будет сгенерирован автономер, и этот автонуммер можно будет использовать для последующего выбора, удаления или обновления, но клиенту не нужно знать об этом автонумере
Я понимаю, что второе решение немного запутанно и сложно, но все же лучше, чем использовать Guids в качестве PK. но если применимо решение 1, продолжайте.
Когда я говорю, что Стоимость - это не только время обработки, но и время его блокировки (ожидания), что является пустой тратой денег, и ваш четырехъядерный сервер может выполнять половину, а большее количество блокировок означает больше шансов на взаимные блокировки, поэтому мой друг никогда не использует Guids.
С уважением
Mubashar