SQL Server中索引的排序规则

时间:2011-06-01 10:04:04

标签: tsql indexing collation

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

3 个答案:

答案 0 :(得分:6)

我不相信你可以。虽然单独记录COLLATE,但您会注意到列出的地方只有3个:

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

请注意,例如,CREATE TABLE

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

明确提到了COLLATE子句。

然而,CREATE INDEX

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

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


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

答案 1 :(得分:6)

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

答案 2 :(得分:5)

尝试制作索引视图并将排序规则添加到select语句中的列。