数据库中的索引问题

来源:互联网 发布:jdk 8u60 linux x32 编辑:程序博客网 时间:2024/05/22 01:42

概述:

对数据库中的数据进行查询操作时,系统对表中的数据有两种检索方式:一种是全表扫描,检索,另一种是利用数据表上建立的索引进行扫描。

详述:

全表扫描是将表中的数据记录从头到尾逐行读取,与查询条件进行对比,返回满足条件的记录。这种检索方式需要读取相关表中的所有数据,需要进行大量的磁盘读写操作。当表中数据量巨大时,查询检索的效率会大大降低。

索引访问是通过搜索索引值,再根据索引值与记录的关系直接访问数据表中的记录行。

细述(以mysql数据库为例):

根据用途,mysql数据库中的索引主要分为几类:主键索引,唯一性索引,普通索引,聚簇索引,以及全文索引几类

普通索引是最基本的索引类型,索引列值可以取空值或者重复值。

唯一性索引与普通索引基本相同,区别仅在于索引列值不能重复,即索引列值必须唯一, 可以为空。

主键索引是一种唯一性索引,但其索引列值不能为空,每个表中只能有一个主键

聚簇索引的索引顺序就是物理存储顺序,一个表只能有一个聚簇索引‘

全文索引只能在数据类型为VARCHAR 和 TEXT的列上.

sql语句:

1.查看表中索引情况

SHOW INDEX FROM 表名;

2.创建索引(三种方法)

一是在创建表时就将索引创建成功

二是在已存在的表中使用CREATE语句创建

三是在已存在的表中使用ALTER TABLE语句创建

下面重点说一下二三种方法

二.如图

三.如图:


3.删除索引:


对于索引的进一步说明:

尽管使用索引可以大大加快查询响应速度,提高数据库的检索性能,但过多的使用索引会降低系统的性能。原因如下:

1.降低更新表中数据的速度

2.增加存储空间

因此,索引值是提高检索效率的一个手段,但最好不要无限制的使用索引。

使用索引的建议:

使用恰当的索引会提高数据查询的效率,但会影响数据更新的速度,不恰当的索引则会降低系统性能。因此建议尽量避免过多的建立索引

数据量较小的表最好不要建立索引

使用组合索引时,严格按照最左前缀法则, 即按照最左字段进行排序,当记录值相同时,在按照次左值进行排序,以此类推

避免在不同值较少字段上建立索引,如不要在性别一列 (男女)建立索引,不仅不会提高搜索速度,还会降低数据更新速度

使用where子句时,避免将索引列作为表达式的一部分

遇到varchar 或char 类型,字符数较多时,可采用开头的一部分建立索引,这样可节约空间。


0 0
原创粉丝点击