Разборы по индексам в SQL Server - PullRequest
9 голосов
/ 01 июня 2011

Мне интересно, есть ли возможность указать параметры сортировки для столбца при создании индекса, который отличается от параметров сортировки этого столбца? И когда индексируются, сортируются ли строковые данные в соответствии с сопоставлением столбца или сопоставлением базы данных?

Ответы [ 3 ]

6 голосов
/ 01 июня 2011

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

6 голосов
/ 01 июня 2011

Я не верю, что ты можешь. Хотя COLLATE задокументировано отдельно, вы заметите, что в списке есть только 3 места, где это может произойти:

  • Создание или изменение базы данных
  • Создание или изменение столбца таблицы
  • Приведение сопоставления выражения

Обратите внимание, что, например, в CREATE TABLE :

<column_definition> ::=
column_name <data_type>
    [ FILESTREAM ]
    [ COLLATE collation_name ] 
    ...

что явно указано предложение COLLATE.

Принимая во внимание, что в ИНДЕКС СОЗДАНИЯ :

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> ( column [ ASC | DESC ] [ ,...n ] ) 
    ...

обратите внимание, что все, что здесь разрешено, это столбец - не определение столбца и не выражение.


Я полагаю, что сопоставление каждого столбца в индексе следует за сопоставлением базового столбца (столбцов) в соответствующей таблице. Насколько я знаю, сортировка базы данных используется не так часто, кроме как для обеспечения сортировки по умолчанию для столбцов во время операторов таблицы CREATE / ALTER.

5 голосов
/ 13 июля 2012

Попробуйте создать индексированное представление и добавьте сопоставление к столбцу в операторе выбора.

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