概述:
对数据库中的数据进行查询操作时,系统对表中的数据有两种检索方式:一种是全表扫描,检索,另一种是利用数据表上建立的索引进行扫描。
详述:
全表扫描是将表中的数据记录从头到尾逐行读取,与查询条件进行对比,返回满足条件的记录。这种检索方式需要读取相关表中的所有数据,需要进行大量的磁盘读写操作。当表中数据量巨大时,查询检索的效率会大大降低。
索引访问是通过搜索索引值,再根据索引值与记录的关系直接访问数据表中的记录行。
细述(以mysql数据库为例):
根据用途,mysql数据库中的索引主要分为几类:主键索引,唯一性索引,普通索引,聚簇索引,以及全文索引几类
普通索引是最基本的索引类型,索引列值可以取空值或者重复值。
唯一性索引与普通索引基本相同,区别仅在于索引列值不能重复,即索引列值必须唯一, 可以为空。
主键索引是一种唯一性索引,但其索引列值不能为空,每个表中只能有一个主键
聚簇索引的索引顺序就是物理存储顺序,一个表只能有一个聚簇索引‘
全文索引只能在数据类型为VARCHAR 和 TEXT的列上.
sql语句:
1.查看表中索引情况
SHOW INDEX FROM 表名;
2.创建索引(三种方法)
一是在创建表时就将索引创建成功
二是在已存在的表中使用CREATE语句创建
三是在已存在的表中使用ALTER TABLE语句创建
下面重点说一下二三种方法
二.如图
三.如图:
3.删除索引:
对于索引的进一步说明:
尽管使用索引可以大大加快查询响应速度,提高数据库的检索性能,但过多的使用索引会降低系统的性能。原因如下:
1.降低更新表中数据的速度
2.增加存储空间
因此,索引值是提高检索效率的一个手段,但最好不要无限制的使用索引。
使用索引的建议:
使用恰当的索引会提高数据查询的效率,但会影响数据更新的速度,不恰当的索引则会降低系统性能。因此建议尽量避免过多的建立索引
数据量较小的表最好不要建立索引
使用组合索引时,严格按照最左前缀法则, 即按照最左字段进行排序,当记录值相同时,在按照次左值进行排序,以此类推
避免在不同值较少字段上建立索引,如不要在性别一列 (男女)建立索引,不仅不会提高搜索速度,还会降低数据更新速度
使用where子句时,避免将索引列作为表达式的一部分
遇到varchar 或char 类型,字符数较多时,可采用开头的一部分建立索引,这样可节约空间。