2015-02-19 4 views
1

В нашем приложении мы создаем много строк в одной таблице на основе некоторых вычислений. Из-за объема строк мы используем BULK INSERT из нашего приложения .Net, чтобы быстро писать строки.Использование GUID в предложении WHERE - Производительность?

Но нам нужно знать, какие идентификаторы были написаны в этом вызове BULK INSERT. Итак, идея состоит в том, чтобы сгенерировать GUID и добавить его в каждую строку, написанную в Bulk Update. Таким образом, GUID сохраняется в таблице.

Если нам нужно посмотреть, какие строки были написаны, мы можем создать SELECT .. FROM TABLE ... WHERE SessionID = guid.

У меня будет столбец таблицы, называемый SessionID (например), VARCHAR (50) NOT NULL, Indexed.

Это приемлемый дизайн?

ответ

3

Вы должны создать столбец с типом 'uniqueidentifier', который предназначен для хранения значений GUID. Внутри он будет хранить его как целое число в 16 байт (128 бит) вместо гораздо более медленной символьной строки, которую вы хотите использовать.

Производительность должна быть очень хорошей, потому что вы просто сравниваете 16 байтовых значений для построения индекса, что является довольно быстрой операцией.

+0

Спасибо @Phil. Думаю, это идеальное решение. – Craig

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