Объединение в не-PK-поле, определяет ли длина типа данных varchar скорость запроса? SQL Server 2008
Мне дали рагтагский ассортимент данных для анализа и попадания в затруднительное положение. У меня есть таблица из 2 миллионов строк с уникальным идентификатором типа varchar(50)
. Этот идентификатор уникален для идентификатора personID
. Пока я не выясню, как мне нужно нормализовать этот мусор, у меня есть еще один вопрос, который может мне помочь прямо сейчас: если я, например, сменил тип данных на varchar(25)
, это поможет запросам быстрее работать, когда они будут объединены на не-ПК-поле? Все символы в строке являются целыми числами, но попытка их преобразования в int вызовет переполнение. Или я мог бы каким-то образом индексировать столбец, чтобы заставить некоторые из запросов работать быстрее?
EDIT: personID
будет внешним ключом к другой таблице с демографической информацией о человеке.
- Некластеризованный индекс в столбце с кластеризацией индексов повышает производительность?
- Выигрывайте результаты поиска с FTS над ним с помощью LIKE на индексированных столбцах?
- Компонентный индекс против INCLUDE Индекс покрытия в SQL Server
- Включить недоступно в индексе покрытия в SQL Server 2008 Express
- Некластеризованные индексы в SQL Server - избирательность - и что находится на странице листового узла?
- Индекс с условием ИЛИ
- Как добавить уникальное ограничение для SQL Server SELECTIVE XML INDEX
- Артефакты реорганизации индекса SQL Server в отчете SSRS
- Каков наилучший способ хранения DateTime в SQL Server для обеспечения максимальной скорости поиска на большом столе?
- SQL Server; индекс в столбце TEXT
- Я смущен, используя Кластерный и некластеризованный Индекс в моем db
- Индекс всех столбцов
- Должен ли я определять индексы для обоих направлений
Технически длина varchar указывает максимальную длину.
Фактическая длина переменной (таким образом, имя), поэтому более низкое максимальное значение не изменит оценку, потому что она будет сделана на фактической строке.
Чтобы получить больше информации :
Проверьте эту статью MSDN и этот поток переполнения стека
Varchar(50)
в varchar(25)
, несомненно, уменьшит размер записи в этой таблице, тем самым уменьшив количество страниц базы данных, содержащих эту таблицу, улучшив производительность запросов (может быть в предельной степени), но такой ALTER Задание TABLE может занять много времени.
В качестве альтернативы, если вы определяете индекс в столбцах соединения, и если ваш список поиска невелик, вы можете включить эти столбцы также в определение индекса ( индекс Covering ), что также значительно снизит время выполнения запроса.