资源预览内容
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
第10章 索引习题1什么是索引?索引分为哪几种?各有什么特点?答:索引是对数据库表中一个或多个列的值进行排序的结构。可以依据索引的顺序和数据库的物理存储顺序是否相同而将索引分为两类:聚集索引(Clustered Index)和非聚集索引(Non-clustered Index)。在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。在非聚集索引中,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度。2列举创建索引的优、缺点。 答:索引并不是必须的,索引是为了加速检索而创建的一种存储结构,使用索引的主要优点就是可以大幅度提高对数据库表中数据的查询速度。每个索引在一个表的数据页面以外建立索引页面,在索引页面中的行包含了对应表中数据行的逻辑指针,通过该指针可以直接检索到数据行,以此加速了对物理数据的检索。索引有时也可能导致数据库在进行添加、删除和更新行操作的速度降低,因为使用索引后,进行添加、删除和更新行操作时,将要对索引也进行相应的操作,而这些操作有时并不需要对数据进行索引操作。但是,在多数情况下,索引所带来的数据检索速度的优势大大超过它的不足之处。同时,索引将占用磁盘空间。什么样的列上适合创建索引?答:合理的规划和使用索引,能较大程度地提高数据操作的速度,但对索引的不当使用却可能降低数据操作的速度。所以,使用索引的原则是:通常情况下,只有当经常查询索引列中的数据时,才需要在表上创建索引。如果应用程序非常频繁地更新数据,或磁盘空间有限,那么最好限制索引的数量。创建索引时须考虑哪些事实和准则?答: 在创建聚集索引之前,应该先了解数据是如何被访问的。可考虑将聚集索引用于以下几种情况:(1)包含数量有限的唯一值的列,如state列只包含50个唯一的州代码。(2)使用下列运算符返回一个范围值的查询:BETWEEN、=、和=。(3)被连续访问的列。(4)经常被使用联接或GROUP BY子句的查询访问的列。一般来说,这些是外键列。对ORDER BY或GROUP BY子句中指定的列进行索引,可以使SQL Server不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。(5)返回大结果集的查询。对于频繁更改的列,则不适合创建聚集索引。在创建非聚集索引之前,同样需要了解数据是如何被访问的。可考虑将非聚集索引用于下面的情况:(1)包含大量非重复值的列,如姓氏和名字的组合(如果聚集索引用于其他列)。如果只有很少的非重复值,如只有1和0,则大多数查询将不使用索引,因为此时表扫描通常更有效。(2)不返回大型结果集的查询。(3)返回精确匹配的查询的搜索条件(WHERE子句)中经常使用的列。(4)经常需要联接和分组的决策支持系统应用程序。应在联接和分组操作中使用的列上创建多个非聚集索引,在任何外键列上创建一个聚集索引。(5)在特定的查询中覆盖一个表中的所有列。这将完全消除对表或聚集索引的访问。创建唯一索引应注意的事项:(1)尽管唯一索引有助于找到信息,但为了获得最佳性能,建议使用主键约束(PRIMARY KEY)或唯一约束(UNIQUE)。(2)只有当唯一性是数据本身的特征时,创建唯一索引才有意义,如果必须实施唯一性以保证数据的完整性,则应创建唯一约束或主键约束。例如,如果打算经常查询雇员表(主键为emp_id)中的社会安全号码 (ssn)列,并希望确保社会安全号码的唯一性,则在ssn列上创建UNIQUE约束。如果用户为一个以上的雇员输入了同一个社会安全号码,则会显示错误。(3)在同一个列组合上创建唯一索引而不是非唯一索引可为查询优化器提供附加信息,所以创建索引时最好创建唯一索引。SQL Server 2000在创建主键约束或唯一约束时,会在表中指定的列上自动创建唯一索引。创建组合索引时的原则:(1)当需要频繁地将两个或多个列作为一个整体进行检索时,可以创建组合索引。(2)创建组合索引时,先列出唯一性最好的列。(3)组合索引中列的顺序和数量的不同都能为不同的组合索引,并会影响查询的性能。在一个表中可以建立几个聚集索引和非聚集索引?答:一个表中只能包含一个聚集索引;一个表中能创建多个非聚集索引
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号