SQL Server中索引的排序规则

Bog*_*ogi 9 t-sql indexing collation

我感兴趣的是,在创建与该列的排序规则不同的索引时是否有可能为列指定排序规则?索引时,字符串数据是根据列的整理或数据库整理排序的吗?

Dam*_*ver 7

我不相信你能.虽然COLLATE是单独记录的,但您会注意到列出的位置只有3个:

  • 创建或更改数据库
  • 创建或更改表列
  • 转换表达式的排序规则

请注意,例如,在CREATE TABLE中:

<column_definition> ::=
column_name <data_type>
    [ FILESTREAM ]
    [ COLLATE collation_name ] 
    ...
Run Code Online (Sandbox Code Playgroud)

明确提到了COLLATE子句.

而在CREATE INDEX中:

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

请注意,此处允许的所有内容都是列 - 不是列定义,也不是表达式.


我相信索引中每列的排序规则遵循相应表中基础列的排序规则.据我所知,除了在CREATE/ALTER表语句中为列提供默认排序规则之外,数据库排序规则的使用并不多.


dem*_*mas 6

您可以使用所需的排序规则创建计算字段,并在此字段上创建索引.


小智 5

尝试创建索引视图并将排序规则添加到select语句中的列.

  • @Pacerier我意识到这很旧,但是我想指出您已链接到有关错误平台的信息。在2014年,SQL Server具有更高级的视图,具有比该MySQL文档中所述更好的性能潜力。 (2认同)