Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Переход с использования GUID на Int  [new]
abrashka
Member

Откуда:
Сообщений: 524
День добрый!
Существует база в которой порядка 300 таблиц.
Большинство таблиц такого вида:
CREATE TABLE MyTable (
	[Local_Id] [int] IDENTITY(1, 1) NOT NULL
	,[GUID_Id] [uniqueidentifier] NOT NULL
	,[Col_1] [int] NOT NULL
	,[Col_2] [int] NOT NULL
	,[Col_3] [int] NOT NULL
	,[Col_4] [int] NOT NULL CONSTRAINT [pk_MyTable_c_Local_Id] PRIMARY KEY CLUSTERED ([Local_Id])
	)

CREATE NONCLUSTERED INDEX [IX_MyTable_GUID_Id] ON MyTable ([GUID_Id] ASC)


Апплицация вносит данные в GUID_Id при помощи NEWSEQUENTIALID ()

Причина историческая, никто толком объяснить не может почему используются GUID
Соответственно практически весь код использует GUID_id для связок между данными.

Для повышения производительности думают отказаться от использования GUID-ов и перейти на использование Local_Id, т.е. прийдетется изменить много кода, тесты и т.п.

Есть какие-то предложения как более-менее эффективно определить разницу и стоит ли вообще этим заниматься?

Спасибо!
9 фев 17, 18:49    [20198094]     Ответить | Цитировать Сообщить модератору
 Re: Переход с использования GUID на Int  [new]
buven
Member

Откуда:
Сообщений: 792
abrashka,
Похоже на оптимизацию ради оптимизации...
А как же золотое правило: работает - не трогай!
Гуглу кормили уже "guid vs int"
А так - может взять самый тяжелый запрос, отсоседить структуру с нужными изменениями и погонять?
9 фев 17, 18:58    [20198122]     Ответить | Цитировать Сообщить модератору
 Re: Переход с использования GUID на Int  [new]
abrashka
Member

Откуда:
Сообщений: 524
buven
... взять самый тяжелый запрос, отсоседить структуру с нужными изменениями и погонять?

Это понятно, но тяжелых запросов не так много, грубо говоря до изменений, что-то бежало 10 секунд, а с изменениями 7, вроде как не принципиально, хотя 30% прирост, но будет ли прирост по всей базе в 30%- не известно :(
9 фев 17, 19:03    [20198142]     Ответить | Цитировать Сообщить модератору
 Re: Переход с использования GUID на Int  [new]
buven
Member

Откуда:
Сообщений: 792
abrashka ,

Первая ссыль из гугла.
С примерами.
9 фев 17, 19:03    [20198144]     Ответить | Цитировать Сообщить модератору
 Re: Переход с использования GUID на Int  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
30%-то существенно. Человек начинает нервничать, если запрос длится более 6 секунд, например.
10 фев 17, 11:51    [20199835]     Ответить | Цитировать Сообщить модератору
 Re: Переход с использования GUID на Int  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
abrashka,

Кстати, если вы потом вдруг решите использовать мерж репликацию, то поля с гуидами придется вернуть.
10 фев 17, 12:22    [20199972]     Ответить | Цитировать Сообщить модератору
 Re: Переход с использования GUID на Int  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
abrashka
Для повышения производительности думают отказаться от использования GUID-ов и перейти на использование Local_Id, т.е. прийдетется изменить много кода, тесты и т.п.
Ожидаемого чуда, скорее всего, не произойдет.
Для повышения производительности будет гораздо более продуктивно заняться оптимизацией криво написанных запросов.
А вот когда уже все запросы вылизаны, можно подумать о смене типов данных столбцов.
10 фев 17, 12:39    [20200054]     Ответить | Цитировать Сообщить модератору
 Re: Переход с использования GUID на Int  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53794
abrashka
Причина историческая, никто толком объяснить не может почему используются GUID

Судя по структуре, база задумывалась как распределённая. Поэтому плюсую вариант "работает - не трогай".
10 фев 17, 14:37    [20200803]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить