Как создать индекс для поиска по шаблону в столбце Int в SQL Server? - PullRequest
1 голос
/ 08 октября 2010

У меня есть таблица с миллионами строк. PK этой таблицы является столбцом Int. Пользователь хочет иметь возможность поиска по шаблону в строках этой таблицы по этому ПК. Делая этот запрос тривиальным способом, он будет ужасно медленным, поскольку сервер Sql выполняет неявное преобразование значения столбца из int в char, чтобы применять подстановочный знак каждый раз, когда выполняется запрос .

Идея состояла бы в том, чтобы создать индекс, в котором будет храниться значение «преобразовано в символ» для этого столбца int, поэтому Sql Server может использовать его вместо преобразования миллионов значений в каждом запросе.

Как я могу это реализовать?

Примечание. Изменение бизнес-требований для поиска с подстановочными знаками или изменение столбца в схеме БД для использования в качестве символа не являются вариантами в этом случае.

Ура!

1 Ответ

4 голосов
/ 08 октября 2010

SQL Server не имеет индексов на основе функций, но вы можете смоделировать поведение, добавив вычисляемый столбец , который приводит / преобразует тип данных в VARCHAR / etc, а затем индексирует этот вычисляемый столбец. Тем не менее, преимущество является спорным, если вы подстановочным знаком ставите левую часть сравнения LIKE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...