4.5.3 创建索引
4.5.3 创建索引
许多查询只涉及文件中的少量记录。例如,像这样的查询”找出Physics
系的所有教师“,或”找出ID
为22201的学生的tot_cred
值“,只涉及学生记录中的一小部分。
如果系统读取每条记录并逐个检查其ID
域是否为”22201”,或者dept_name
域是否取值为” Physics
“,这样的方式是很低效的。
什么是索引
在关系的属性上
所创建的索引(index
)是一种数据结构,
索引的作用
索引允许数据库系统高效地
找到关系中那些在索引属性
上取给定值的元组,而不用扫描关系中的所有元组。
例如,如果我们在student
关系的属性ID
上创建了索引,数据库系统不用读取student
关系中的所有元组,就可以直接找到任何像22201或4553那样具有指定ID值的记录。
索引也可以建立在一个属性列表上,例如在student
的属性name
和dept_name
上。
我们将在后面第11章学习索引是如何实现的,包括一种被称作B+
树的索引,它是一种特别的广泛使用的索引类型。
如何创建索引
尽管SQL
语言没有给出创建索引的正式语法定义,但很多数据库都支持使用如下所示的语法形式来创建索引:
1 | create index studentID_index |
上述语句在student
关系的属性ID
上创建了一个名为studentID_index
的索引。
查询是自动使用索引
如果用户提交的SQL
查询可以从索引的使用中获益,那么**SQL
查询处理器就会自动使用索引**。例如,给定的SQL
査询是选出ID
为22201的student
元组,SQL
查询处理器就会使用上面定义的studentID_index
索引来找到所需元组,而不用读取整个关系。