1建立索引
2非聚簇索引
非聚簇索引查找数据示意图。
3哪些情况需要建立非聚簇索引
每个表只能有一个
聚簇索引,因为一个表中的记录只能以一种物理顺序存放。但是,一个表可以有不止一个
非聚簇索引。实际上,对每个表你最多可以建立249个
非聚簇索引。
非聚簇索引需要大量的硬盘空间和内存。另外,虽然
非聚簇索引可以提高从表中取数据的速度,它也会降低向表中插入和更新数据的速度。每当你改变了一个建立了
非聚簇索引的表中的数据时,必须同时更新索引。因此你对一个表建立
非聚簇索引时要慎重考虑。如果你预计一个表需要频繁地更新数据,那么不要对它建立太多
非聚簇索引。另外,如果硬盘和内存空间有限,也应该限制使用
非聚簇索引的数量。
4用SQL建立索引
CREATE INDEX mycolumn_index ON mytable (myclumn)
这个语句建立了一个名为mycolumn_index的
索引。
注意:
执行后,都会收到如下的信息:
This command did not return data,and it did not return any rows
这说明该语句执行成功了。
DROP INDEX mytable.mycolumn_index
注意在DROP INDEX 语句中你要包含表的名字。在这个例子中,你删除的
索引是mycolumn_index,它是表mytable的索引。
要建立一个
聚簇索引,可以使用关键字CLUSTERED。
5非聚簇索引的使用
SQLServer缺省情况下建立的
索引是
非聚簇索引,由于非聚簇索引不重新组织表中的数据,而是对每一行存储索引列值并用一个指针指向数据所在的页面。换句话说
非聚簇索引具有在索引结构和数据本身之间的一个额外级。一个表如果没有
聚簇索引时,可有250个
非聚簇索引。每个
非聚簇索引提供访问数据的不同排序顺序。在建立
非聚簇索引时,要权衡索引对查询速度的加快与降低修改速度之间的利弊。另外,还要考虑这些问题:
1、
索引需要使用多少空间。
2、合适的列是否稳定。
3、
索引键是如何选择的,扫描效果是否更佳。
4、是否有许多重复值。
对更新频繁的表来说,表上的
非聚簇索引比聚簇索引和根本没有索引需要更多的额外开销。对移到新页的每一行而言,指向该数据的每个
非聚簇索引的页级行也必须更新,有时可能还需要索引页的分理。从一个页面删除数据的进程也会有类似的开销,另外,删除进程还必须把数据移到页面上部,以保证数据的连续性。所以,建立
非聚簇索引要非常慎重。
非聚簇索引常被用在以下情况:
1、某列常用于集合函数(如Sum,....)。
2、某列常用于join,order by,group by。
3、查寻出的数据不超过表中数据量的20%。
6用事务管理器建立索引
要用Manage Tables 窗口建立一个新
索引,单击按钮Advanced Options(它看起来象一个前面有一加号的表)。这样就打开了Advanced Options对话框。这个对话框有一部分标名为Primary Key。
要建立一个新
索引,从下拉列表中选择你想对之建立索引的
字段名。如果你想建立一个对多字段的
索引,你可以选择多个
字段名。你还可以选择
索引是聚簇的还是非聚簇的。在保存表信息后,
索引会自动被建立。在Manage Tables窗口中的
字段名旁边,会出现一把钥匙。
要建立没有这些限制的
索引,你需要使用Manage Indexes窗口。从
菜单中选择Manage|Indexes,打开Manage Indexes窗口。在Manage Indexes窗口中,你可以通过下拉框选择表和特定的
索引。(见图11.2)。要建立一个新
索引,从Index下拉框中选择NewIndex.,然后就可以选择要对之建立索引的字段。单击按钮Add,把字段加入到
索引中。
注意:
唯一索引是指该字段不能有重复的值,而不是只能建立这一个索引。
7聚簇索引与非聚簇索引的区别
分七步完成。
Forward from http://baike.baidu.com/link?url=Lx-s9NeoCB23rB0bCjqoAdcJmLaKojgdzE9nSH3k7rdtIDjbqOJp4GgvxJiva105Qg0ktgplYl1pM_eF5mVKr_