Вам нужно будет создать вычисляемый столбец:
CREATE TABLE a_table (a_column NVARCHAR(MAX), a_foo AS foo(a_column))
CREATE INDEX an_index ON a_table (a_foo)
Чтобы быть индексируемым, функция foo
должна, конечно, соответствовать определенным требованиям:
Индексирование вычисляемых столбцов, вызывающих пользовательскую функцию
Вычисляемый столбец, который вызывает пользовательскую функцию, может использоваться в индексе, когда пользовательская функция имеет следующие значения свойств:
IsDeterministic = true
IsSystemVerified = true
(если вычисляемый столбец не сохраняется)
UserDataAccess = false
SystemDataAccess = false
Вы не можете построить индекс для недетерминированной функции, такой как GETDATE
, которая меняет свое возвращаемое значение каждый раз, когда вы вызываете ее.
Будет проще решить ваше дело, если вы разместите функцию, по которой хотите индексировать.