键为什么有升序和降序,难道它是索引的一种?

作者:vkvi 来源:ITPOW(原创) 日期:2009-4-15

在 SQL Server 中添加键时,打开的是“索引/键”对话框,并且在建立键时还可以选择字段的升序和降序,难道键时索引的一种?

其实键是一种约束,创建索引使用的是 CREATE INDEX 语句,而创建键使用的是 ALTER TABLE ADD UNIQUE / PRIMARY KEY。索引存在于 sysobjects 表中,而键不存在 sysobjects 表中。

键用来唯一标识一条记录,好像拿升序和降序来没有用,但为什么在建立键时要选择字段升序和降序呢?我认为光从键的作用上来解释是行不通的,得从应用上来解释:假设有一个表,其中有一个字段是身份号,身份号是一个键,此外没有其他索引和键,表中已有 500 万条记录,假设现在要添加一个身份号,为了识别是否重复,得把整个表扫一遍,似乎有点没有必要,如果键也有索引一样的功能,不是挺好么?

那么键到底有没有索引一样的功能呢?或者说,在 SQL Server 中,键到底有没有索引一样的功能呢?

建立一个表 Foo,三个字段:DisplayText、DisplayText_Key、DisplayText_Index,为 DisplayText_Key 建立键,为 DisplayText_Index 建立索引。

分别运行三个查询语句:

select * from Foo where DisplayText='cftea'
select * from Foo where DisplayText_Key='cftea'
select * from Foo where DisplayText_Index='cftea'

利用查询分析器的执行计划,结果如下:

键与索引的性能

可以看出,键和索引有相同的表现,所以我们可以得出:至少在 SQL Server 中,键具有索引的功能,所以有升序和降序。

那索引为什么要有升序和降序呢?请参见索引为什么要有顺序

相关阅读

相关文章