数据库原理与应用基础第9章 MySQL索引
第9章 MySQL索引索引索引的定义与管理索引的设计原则和注意事项知识点小结本章实验
第9章 MySQL索引索引是一种特殊的数据库结构,其作用相当于一本书的目录,可以用来快速查询数据库表中的特定记录。索引是提高数据库性能的重要方式。本章将介绍索引的含义和作用、索引定义的原则和创建索引的方法以及查看索引和删除索引的方法。
第9章 MySQL索引索引索引的定义与管理索引的设计原则和注意事项知识点小结本章实验
索引概述目的:优化数据库的查询速度。所有MySQL列类型都可以被索引,对相关列使用索引是提高select操作性能的最佳途径。不同的存储引擎定义了每一个表的最大索引数量和最大索引长度,所有存储引擎对每个表至少支持16个索引,总索引长度至少为256字节。索引分为哈希索引、B树索引。InnoDB和MyISAM支持B树索引,MyISAM支持哈希索引、B树索引但默认的是哈希索引。
索引的优点与缺点索引的优点:(1)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。(2)可以大大加快数据的检索速度,这也是创建索引的最主要的原因。(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。(4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。(5)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引的优点与缺点索引的缺点:(1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。(2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。(3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
索引的特征索引的特征:唯一性索引:保证在索引列中的全部数据是唯一的,不会包含冗余数据。当在表中创建主键约束或者唯一性键约束时,MySQL自动创建一个唯一性索引;复合索引:一个索引创建在两个列或者多个列上。原则:长度不能太长,不能跨表建立,认真排列列的顺序
索引的分类普通索引不附加任何限制条件可以创建在任何数据类型中,其值是否唯一和非空由字段本身的完整性约束条件决定。建立索引以后,查询时可以通过索引进行查询。唯一性索引使用UNIQUE参数可以设置索引为唯一性索引。在创建唯一性索引时,限制该索引的值必须是唯一的。通过唯一性索引,可以更快速地确定某条记录。主键就是一种特殊唯一性索引。
索引的分类(续)全文索引使用FULLTEXT参数可以设置索引为全文索引。全文索引只能创建在CHAR、VARCHAR或TEXT类型的字段上。查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度。在默认情况下,全文索引的搜索执行方式不区分大小写。但索引的列使用二进制排序后,可以执行区分大小写的全文索引。
索引的分类(续)单列索引在表中的单个字段上创建索引。单列索引只根据该字段进行索引。单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。只要保证该索引只对应一个字段即可。多列索引多列索引是在表的多个字段上创建一个索引。该索引指向创建时对应的多个字段,可以通过这几个字段进行查询。但是,只有查询条件中使用了这些字段中第一个字段时,索引才会被使用。
索引的分类(续)空间索引使用SPATIAL参数可以设置索引为空间索引。空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率。MySQL中的空间数据类型包括GEOMETRY和POINT、LINESTRING和POLYGON等。目前只有MyISAM存储引擎支持空间检索,而且索引的字段不能为空值。
第9章 MySQL索引索引索引的定义与管理索引的设计原则和注意事项知识点小结本章实验
创建索引创建索引是指在某个表的一列或多列上建立一个索引。创建索引方法:直接创建索引1)在创建表的时候创建索引。2)在已存在的表上创建索引3)使用altertable语句来创建索引。间接创建索引例如:在表中定义主键约束或者唯一性键约束时,同时也创建了索引。
在创建表的时候创建索引语法格式:CREATETABLEtbl_name(字段名称字段类型[完整性约束条件],…,[UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY[索引名称](字段名称[(长度)][ASC|DESC]));INDEX或KEY参数用来指定字段为索引,索引名参数是用来指定要创建索引的名称。字段名称参数用来指定索引索要关联的字段的名称,”长度”参数用来指定索引的长度,ASC用来指定为升序,DESC用来指定为降序。
创建索引示例示例:创建普通索引CREATETABLEt_test4(i