sql建立索引
本文将介绍利用SQL建立索引的方法。
假设你想找书中的某一个句子。你可以一页一页地逐页搜索,但这会花很多时间。而通过使用索引,你可以很快地找到你要搜索的主题。
表的索引与附在一本书后面的索引非常相似。它可以极大地提高查询的速度。对一个较大的表来说,通过加索引,一个通常要花费几个小时来完成的查询只要几分钟就可以完成。因此没有理由对需要频繁查询的表增加索引。
注意:
当你的内存容量或硬盘空间不足时,也许你不想给一个表增加索引。对于包含索引的数据库,SQL Sever需要一个可观的额外空间。例如,要建立一个聚簇索引,需要大约1.2倍于数据大小的空间。要看一看一个表的索引在数据库中所占的空间大小,你可以使用系统存储过程sp_spaceused,对象名指定为被索引的表名。
聚簇索引和非聚簇索引
假设你已经书的索引找到了一个句子所在的页码。一旦已经知道了页码后,你很可能漫无目的翻寻这本书,直至找到正确的页码。通过随机的翻寻,你最终可以到达正确的页码。但是,有一种找到页码的更有效的方法。
首先,把书翻到大概一半的地方,如果要找的页码比半本书处的页码小,就书翻到四分之一处,否则,就把书翻到四分之三的地方。通过这种方法,你可以继续把书分成更小的部分,直至找到正确的页码附近。这是找到书页的非常有效的一种方法。
SQL Sever的表索引以类似的方式工作。一个表索引由一组页组成,这些页构成了一个树形结构。根页通过指向另外两个页,把一个表的记录从逻辑上分成和两个部分。而根页所指向的两个页又分别把记录分割成更小的部分。每个页都把记录分成更小的分割,直至到达叶级页。
索引有两种类型:聚簇索引和非聚簇索引。在聚簇索引中,索引树的叶级页包含实际的数据:记录的索引顺序与物理顺序相同。在非聚簇索引中,叶级页指向表中的记录:记录的物理顺序与逻辑顺序没有必然的联系。
聚簇索引非常象目录表,目录表的顺序与实际的页码顺序是一致的。非聚簇索引则更象书的标准索引表,索引表中的顺序通常与实际的页码顺序是不一致的。一本书也许有多个索引。例如,它也许同时有主题索引和作者索引。同样,一个表可以有多个非聚簇索引。
通常情况下,你使用的是聚簇索引,但是你应该对两种类型索引的优缺点都有所理解。
每个表只能有一个聚簇索引,因为一个表中的记录只能以一种物理顺序存放。通常你要对一个表按照标识字段建立聚簇索引。但是,你也可
相关文档:
SQL Lite
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.
It is a open source product and can be downloaded from http://www.sqlite.org/ . SQL Lite is best suited in Smart Client architecture, where we can locally store all ......
看到别人在论坛的提问:
一个表的效率问题
今天碰到2张表
1张 有字段
表A有
jtbh(家庭编号) hzxm(户主姓名) hnbh(户内最大编号)
1000 张三 03
1001 赵六..........................
表 ......
这两天研究了SQL SERVER的字段修改.有一些心得,写出来为日后参考:
1,删除字段: ALTER TABLE [tablename] DROP COLUMN [fieldname]
删除的时候该字段必须没有被任何外键引用,没有任何约束.
2,删除约束: ALTER TABLE [tablename] DROP CONSTRAINT constraint_name
删除约束是约束名不可加单引号.
3,增加默认值约束: ALT ......
有时, 为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。啊,但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度,用户必须等待的时间过长,他们就会 ......
1、先导出数据到ACCESS,再导到sql server2000,出现问题,字段类型被改变。
2、采用 生成sql server脚本 解决问题。
SQL Server 2005数据库文件转到SQL Server 2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
--&nb ......