Насколько значительна разница в производительности при присоединении к nvarchar по сравнению с int? - PullRequest
10 голосов
/ 26 июня 2011

Я понимаю, что объединение в nvarchar медленнее, потому что индекс больше, чем nvarchar, использующий 2 байта для каждого символа, но int всегда 4 байта. Значительна ли разница в производительности соединения? Есть ли веская причина избегать присоединения к nvarchar? Я не смог найти ни одной статьи MSDN на эту тему.

1 Ответ

12 голосов
/ 26 июня 2011

Как минимум 8x процессор.Это измеримое увеличение сравнения nvarchar по сравнению с varchar: правила сортировки и сравнения в юникоде сложнее, чем в прямом varchar.

Итак, если предположить, что varchar и int равны (они не равны), nvarchar будет иметь служебные данные по сравнению с int

Затем, байт за байт ('1234' против 1234)вы сравниваете 10 байтов против 4 байтов.Это также означает, что более широкий ключ для меньшего количества индекса и записей данных на странице = больше ввода-вывода.

Наконец, если ваш nvarchar содержит более 450 символов, вы не можете индексировать его, потому что ключ индекса имеет максимальную ширину 900 байт.

...