Index on a Varchar?

У нас возникли проблемы с блокировкой таблиц в производстве. Я заметил, что создал хранимую процедуру, которая получает список заказов по номеру заказа. Номер заказа - это VARCHAR(150). На этом столбце нет индекса любого типа.

На данный момент в этом столбце много значений NULL. Однако со временем (эта таблица была запущена недавно) таблица значительно вырастет. В это время больше не будет добавляться NULL-значений.

Мой вопрос состоит из двух частей. Во-первых, будет ли здесь полезен индекс. Процесс интенсивно используется. И если да, то должен ли он быть кластеризованным или нет? Данные такие, как CP123456, DR126512.

Второй вопрос, который, вероятно, влияет на первый - будет ли полезно изменить столбец на CHAR(10), так как "кажется", что номер заказа всегда одного размера. Есть ли преимущество в скорости при размещении индекса на CHAR фиксированной длины, в отличие от VARCHAR(150)?

(Разница в размере объясняется неизвестными требованиями при создании столбца).

SQL Server 2008.

6
задан Craig 30 September 2011 в 00:25
поделиться