Оптимизировать столбец GUID - PullRequest
0 голосов
/ 19 апреля 2019

Извините за мой английский; в нашем проекте SQL Server 2014 у нас есть две таблицы, которые синхронизируются между веб-приложением и устройствами Android (поэтому они есть на всех мобильных устройствах).

В наших базах данных эти две таблицы идентифицируются уникальными идентификаторами типа integer как первичный ключ, но мы также хотели, чтобы один столбец GUID "следовал" за данными при его создании.

Наша таблица A имеет следующие столбцы:

A_ID int
A_guid nvarchar (50)

и таблица DetailA:

detailA_ID int
detailA_guid nvarchar (50)
A_guid nvarchar (50) (on mobile only)

Столбцы GUID используются в мобильных приложениях и при синхронизации на сервере SQL, данные «detail» будут искать идентификатор SQL Server, соответствующий «A_guid»:

select A_ID 
from A 
where A_guid = detailA.A_guid

Все наши данные были связаны между ними через учетные данные SQL Server. Конечно, все работает, пока данных мало. «GUID» скоро займет немного времени. Все наши столбцы GUID имеют формат:

DEVICE_ID-YYYMMDD- [Function NEWID ()]

Применение индекса не очень эффективно. Я думал об изменении формата, чтобы соответствовать:

DEVICE_ID-YYYMMDD_HIS

Но я не знаю, будем ли мы набирать скорость.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Как сказали мои товарищи, если вы хотите использовать GUID, используйте uniqueidentifier, который является известным типом данных в SQL Server.

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

Так что вместо того, чтобы делать: DEVICE_ID-YYYMMDD- [Function NEWID ()]

Вам будет лучше сделать это: INSERT INTO informationTable (DeviceId, CreatedDate, RecordGUID)

0 голосов
/ 19 апреля 2019

Поскольку GUID (глобально уникальный идентификатор) по определению является уникальным, вам не нужно включать DEVICE_ID в столбцы guid. Если вам нужны эти данные, храните их отдельно в отдельном столбце. Это, как упомянуто в комментариях, позволит вам использовать тип данных uniqueidentifier, который немного улучшит производительность. Определенно, создайте индекс для столбца guid, это будет намного быстрее, чем отсутствие индекса!

(Я не уверен, что означает _HIS, но добавление дополнительных символов не ускорит процесс.)

...