暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql索引,主键索引,唯一索引的区别,索引的缺点是什么?

小码哥 2021-05-26
1177

(1)索引:通过在表字段中建立索引可提高查询优化,确保数据的唯一性,以及可以对全文索引字段中的大量文本的搜索进行优化。

(2)主键索引(primary key):主要作用是确定数据表里一条特定的数据记录的位置。数据表会根据主键的唯一索引性来唯一标示每条记录。

(3)唯一索引(unique)主要是为了避免数据出现重复

(4)区别:每个表中只能有一个主键索引,但可以有多个唯一索引。

(优点):创建索引可以大大提高系统的性能:

(1)保证数据库表中每一行唯一性.

(2)加快数据检索速度,最主要的原因。

(3)加速表和表之间连接

(4)在使用分组和排序 子句进行数据检索时,显著减少查询中分组和排序时间。

 (5)查询使用优化隐藏器,提高系统性能。

 增加索引也有许多不利的方面:

(1)创建和维护索引要耗费时间,随着数据量的增加而增加。

(2)占物理空间,除了数据表占数据空间之外,索引还要占一定的物理空间,如果要建立聚簇索引,空间就会更大。

(3)当对表数据进行增删改时,索引也要动态维护,降低数据维护速度。

在哪建索引?

(1)经常需要搜索的列,加快搜索的速度;

 (2)主键列,强制该列唯一性和组织表中数据排列结构

(3)经常连接列(外键)加快连接速度(4)范围搜索列,因索引已排序,范围是连续

(5)排序列,因索引已排序,可利用索引排序加快时间; 

(6)WHERE子句列,加快条件判断。

为什么要创建索引呢?

这是因为,创建索引可以大大提高系统的性能。

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。

第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。


文章转载自小码哥,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论