Создать индекс по частичному столбцу CHAR - PullRequest
3 голосов
/ 27 октября 2010

У меня есть столбец CHAR (250), используемый в качестве внешнего ключа для столбца varchar (24).

В MySQL я напоминаю, что мог бы создать столбец, определяющий индекс (24), чтобы создатьиндекс слева 24 символа.Это кажется невозможным на MS SQL Server.

У меня такой вопрос:

Можно ли использовать индексированное представление в SQL Server 2008 для индексирования подстроки этого столбца,и если да, то будет ли это иметь какие-либо побочные эффекты на производительность стола?

Ответы [ 2 ]

7 голосов
/ 27 октября 2010

Вы можете создать постоянный вычисляемый столбец, затем проиндексировать его, см. Создание индексов для вычисляемых столбцов

alter table add newcolumn as cast(oldcolumn as varchar(24)) persisted;
create index table_newcolumn on table (newcolumn);
2 голосов
/ 28 октября 2010

Я надеюсь, у вас есть хорошая реляционная причина для этого.Я предполагаю, что первые 24 символа предоставленной поставщиком таблицы на самом деле представляют собой отдельный атрибут и должны были быть в отдельном столбце.

Итак ...

Создание представления таблицы вендора.Индексируйте это, если хотите.Я сомневаюсь, что вы можете указать ограничение FK на представление, но вы наверняка можете написать триггер для того же эффекта.Проверка триггера на индексированное представление будет очень быстрой, за счет небольшого увеличения времени обновления базовой таблицы представления.

...