Prewin

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

09年到了,这也是09年的第一篇文章,08年底辞职在家,新年前这段时间一直在提高自己的mssql,也上上csdn论坛。

今天吧索引系统学习一下,做个记录。也许有的只是只言片语,不过我觉得有用的就会摘下来供大家参阅。

1,什么是聚集索引,为什么一个表中只能有一个聚集索引?(也叫簇索引)

     聚集索引是一种特殊的索引,它重组了表中的数据,使数据按照索引的排序顺序存放在表中,这一点类似于字典,即所有词条在字典中都以字母顺序排列。内容只能按照一种形式排列,所以一个表只能有一个聚集索引。因为内容是有一定顺序的,所以按照范围查找的时候聚集索引就显得非常有用了。再有就是:对表中的值顺序访问,或者经常返回一大堆数据时,或使用between,<,>,>=,<=的操作来返回一个范围时,考虑用聚集索引。

2,什么是非聚集索引,可以在一个表中创建多个非聚集索引么?

     与聚集索引不同的是,非聚集索引其中的数据顺序不同于表中的物理存储顺序,他有的只是指向对应数据的指针。指针是有序的,数据的物理位置是无序的。所以多个非聚集索引也是可以的。当然也可以给多个列创建索引,叫做复合索引。

3,如何用SQL创建索引?

-----------创建非聚集索引------------
create unique nonclustered 
    
index bulletin_Id 
    
on  bulletin(id)
------------查询是否使用了索引---------------
set showplan_text on
select * from bulletin where id=2

其中unique 可选nonclustered 是非聚集,clustered是聚集。bulletin_Id 是索引名字,bulletin(id)是bulletin表的id列。

为了能在查询结果里看到是否使用了索引可以用set showplan_text on
4,优化数据库与索引的关系?

     我想这绝对是个大问题,三言两语肯定搞不定,但是可以确定的是,理解了各类型索引的原理,对于数据优化肯定有很大的帮助,因为只有这样才能根据实际情况选择最合适的数据优化方案。

posted on 2009-01-15 13:21  Prewin  阅读(442)  评论(0)    收藏  举报