选择题 17.  下面哪一选项能提高查询效率______。
【正确答案】 B
【答案解析】 主关键字(主键,Primary Key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,外键用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。
   索引是一种提高数据库查询速度的机制,它是一个在数据库的表或视图上按照某个关键字段的值,升序或降序排序创建的对象。当用户查询索引字段时,它可以快速地执行检索操作,借助索引,在执行查询的时候不需要扫描整个表就可以快速地找到所需要的数据。一条索引记录包含键值和逻辑指针。创建索引时,系统分配一个索引页。在表中插入一行数据,同时也向该索引页中插入一行索引记录。由此可以看出,索引在提高查询效率的同时也增加了插入操作的时间,由此适合在以查询为主的场景使用。
   索引的类型有聚簇索引和非聚簇索引。聚集索引是表中的行的物理顺序与键值的逻辑顺序一样,一个表只能有一个聚簇索引。非聚簇索引是数据存储与索引存储不在同一个地方。与非聚簇索引相比,聚簇索引一般情况下可以获得更快的数据访问速度。
   创建索引可以大大提高系统的性能,主要表现为以下几个方面:首先,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;其次,通过索引,可以大大加快数据的检索速度;再次,通过索引可以加速表和表之间的连接,从而有效实现数据的完整性;然后,在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间;最后,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
   索引可以有效地提高查询效率,那么为什么不因此而将所有的列都建立索引呢?其实索引尽管可以带来方便,但并非越多越好,过多的索引也会带来许多不利的问题。首先,创建索引和维护索引要耗费时间、空间,当数据量比较小时,这种问题还不够突出,而当数据量比较大时,这种缺陷会比较明显,效率会非常低下;其次,除了数据表占数据空间之外,每一个索引还需要占用一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大,从而造成不必要的空间浪费;最后,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,从而降低了数据的维护速度。
   通过以上分析发现,如果需要提高查询速度,可以在经常被查询的字段上创建索引来提高查询效率。对于Name(姓名)和Age(年龄),通常而言,姓名是经常被查询的字段,因此,通过增加索引可以提高查询效率。所以,选项B正确。