索引与约束

文章详细介绍了数据库中的约束和索引的区别,包括索引的使用场景如WHERE、GROUPBY、ORDERBY查询,以及不同类型的索引如B+树、自适应哈希和全文索引。同时,讨论了索引的代价,如空间占用和DML操作变慢。此外,还提到了不同类型的索引(主键、唯一、普通和前缀索引)以及约束(主键、唯一、外键等),特别是外键在InnoDB存储引擎中的作用,用于保持数据的参照完整性。
摘要由CSDN通过智能技术生成

约束与索引的区别

创建主键索引或者唯一索引的时候同时创建了相应的约束;但是约束是逻辑上的概念;索引是一个数据结构既包含逻辑的概念也包含物理的存储方式。

索引使用场景

1)使用where条件判断时,会使用索引。

(2)使用group by分组查询时,会判断后面的列是否创建了索引,如果创建了就会使用索引对应的B+树。

(3)使用order by时,会判断后面的列是否创建了索引,如果创建了就会使用索引对应的B+树。

索引的代价

(1)空间上:索引是一种存储结构,需要写入磁盘中,会占用空间,在工程应用中,一般不会超过8个索引。

(2)时间上:维护的代价,体现在DML操作会变慢,因为它要维护所有索引对应的B+树。

索引分类

按照数据结构:

①B+树索引。

②自适应hash索引。主要用在内存当中,看MySQL缓冲中是否有数据。

③全文索引。将存储在数据库当中的整本书和整篇文章中的任意内容信息查找出来的技术;关键词 FULLTEXT;在短字符串中用 LIKE %;在全文索引中用 match 和against。一般不会用到;如果要用全文索引,会使用elasticsearch工具。

按照物理存储分为:

聚集索引,或者称为聚簇索引。聚集索引是主键对应的那个B+树;会存储对应的行数据。

辅助索引,或称为二级索引。比如通常设计的普通索引或组合索引,只有索引信息和主键ID信息,没有行数据。

按照列属性分为:

(1)主键索引。是一个非空唯一索引,一个表只有一个主键索引;在 innodb 中,主键索引的 B+ 树包含表数据信息。

PRIMARYKEY(key)

(2)唯一索引。不可以出现相同的值,允许出现null。

UNIQUE(key)

(3)普通索引。允许出现相同的索引内容。

INDEX(key)-- or
KEY(key[...])

(4)前缀索引。只比较前几个字符的长字符串。

约束

为了实现数据的完整性,对于 innodb,提供了以下几种约束:primary key,unique key,foreign key,default,not null。

外键约束

外键用来关联两个表,来保证参照完整性;MyISAM 存储引擎本身并不支持外键,只起到注释作用;而 innodb 完整支持外键,并具备事务性。

被引用的表为父表,引用的表称为子表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值