《数据库原理与应用》09.索引的创建和使用.pptx
孙发勤扬州大学教育科学与技术学院Y《数据库原理与应用》
第九讲索引的创建和使用
索引的概念和优点索引的分类创建索引的方法对索引进行管章的学习要点:
01索引是由表中的一列或若干列字段值以及相应的指向表中物理标识这些值的数据页的逻辑指针构成的.0203一.索引的概念:索引概述
使用索引对数据进行各种操作可以极大的提高系统性能,尤其是在数据查询方面.利用索引的数据查询一.索引的优点:索引概述
不利用索引的数据查询(直接查找)系统直接在数据表中查询,从表的第一条记录开始,依次扫描比较数据表中的所有记录,直到找到所需的记录或扫描完数据表的所有记录。索引概述
索引概述二.索引的缺点:1.创建的索引文件将要占用一定容量的存储空间.2.当每次对数据表进行更新时,数据库还要执行额外的操作来维护索引.降低对数据表的更新速度.总结:利用索引可以提高对表的查询速度,但是会降低对表的更新速度,所以过多的索引不一定能提高系统的性能.我们必须科学的设计索引,才能带来数据库性能的提高.
索引概述三.建立索引需参照的原则(一)建议创建索引的列1.在经常用来检索的列上创建索引(如经常在WHERE、GROUPBY、ORDERBY子句中出现的列).2.在表的主键、外键上创建索引.3.在聚集索引中,避免包括不必要的列,尽可能使用较小的数据类型,例如用VARCHAR代替CHAR。
索引概述三.建立索引需参照的原则(一)建议创建索引的列4.在经常用于表间连接的字段上建立索引.5.在条件表达式中经常用到的不同值较多的字段上建立索引,在不同值较少的字段上不要建立索引.6.如果经常同时使用多个字段排序,可以在这些字段上建立复合索引。7.具有高选择性的列是索引的好候选列,具有高密度的列是索引最糟糕的候选列。
一般不考虑用于创建索引的列.在查询中几乎不涉及的列包含太多重复值的列(如性别)当数据表的读写性能比查询更重要时,应少建或不建索引.数据类型为TEXT、NTEXT和IMAGE的列(不能用于创建索引)。索引概述
索引分类一.从数据表存储结构的角度分类:1.聚集索引2.非聚集索引二.从索引字段是否允许存在重复值来分类:1.唯一索引2.普通索引三.从创建索引依据的字段个数来分类:1.单字段索引2.复合索引(多字段索引,最多可包含16个字段,但列的数据类型的长度之和不能超过900个字节)
聚集索引一.概念:聚集索引将表中的记录在物理数据页中的位置按索引字段值重新排列.二.创建聚集索引的注意事项:1.每个表只能有一个聚集索引2.因为聚集索引改变了表中行的物理顺序,所以在创建任何非聚集索引之前要首先创建聚集索引.3.在聚集索引的创建过程中,SQLSERVER会临时使用当前数据库的磁盘空间(大约为原表的1.2倍),所以要保证有足够的空间创建聚集索引.
非聚集索引一.概念:非聚集索引与表中数据行的实际存储结构无关,非聚集索引存储的是索引关键字的值与记录的存储位置的对应关系.二.创建非聚集索引的注意事项:1.使用非聚集索引的查询速度要比使用聚集索引的查询速度慢.2.一个表可以创建多个非聚集索引(最多可达249个).3.当删除、新建或重建聚集索引时,系统会自动更新所有的非聚集索引。
例如:当创建主键约束或唯一性约束时系统会自动的创建唯一性索引.一.由系统自动创建打开企业管理器——右击需创建索引的表—所有任务——管理索引——……二.用企业管理器创建索引创建索引
创建索引二.用企业管理器创建索引注意事项:在索引页已填满时,SQLSERVER就必须花时间拆分该索引页,以便为新行腾出空间.选择合适的填充引子值可以在叶级索引页上分配出一定百分比的可用空间,以减少页拆分.提高数据库的性能.1.填充索引:用于指定索引中间级即非叶节点中每个页(节点)上保持开放的空间.其值使用填充因子所指定的大小.2.填充因子:在创建索引时用于指定每个索引页的数据占索引页大小的百分比.
用企业管理器创建索引填充因子大小的设置原则:对于那些频繁进行大量数据插入或删除的表,填充因子可大约设为10.对数据不更改、只读的表,填充因子可以设到95以上.创建索引
1利用TRANSACT-SQL语句创建索引2语法格式:3CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]4INDEXINDEX_NAMEON{TABLE|VIEW}5(COLUMNNAME[ASC|DESC][……])6[ONFILEGROUPNAME]创建索引
利用TRANSACT-SQL语句创建索引01例1:为AAA数据库中的学生表创建一个唯一02聚集索引CC,依据学号字段进行降序排列。03USEAAA04CREATEUNIQUECLUSTER