美文网首页程序员
数据库中“约束”和“索引”的区别

数据库中“约束”和“索引”的区别

作者: 陈某君 | 来源:发表于2019-10-16 12:01 被阅读0次

根据《MySQL技术内幕》中的解释:

约束更是一个逻辑的概念,用来保证数据的完整性,而索引是一个数据结构,既有逻辑上的概念,在数据库中还代表着物理存储的方式。

那么,我们需要先理解“什么是数据完整性”

数据完整性

  1. 概念:很容易理解,就如字面意思,我们需要保证我们存入的数据满足特定的要求。而如果是文件系统的话,我们一般通过程序端进行控制;但关系型数据库(MySQL数据库)本身能够保证数据完整性。
  2. 数据完整性有以下三种形式:
  • 实体完整性保证表中有一个主键。可以通过Primary Key或Unique Key约束,也可以编写一个触发器。
  • 域完整性保证数据每列的值满足特定条件。通过几种途径来保证:选择合适的数据类型;外键约束;触发器;DEAFAULT约束。
  • 参照完整性保证两张表之间的关系。通过外键或者触发器。

“索引”之于数据结构

MySQL中InnoDB引擎是通过B+树这种数据结构进行数据存取的,而“索引”就是B+树的子叶结点(非树叶)。我们说InnoDB基于B+树查找数据,也可以说基于索引查找数据。利用好索引可以大大提高查询的性能。

总结

最后,再来理解一下开头的那句话。
约束是一个逻辑概念,它更多是指一种功能,用来保证数据完整性。索引是一个数据结构,因为索引是B+树的子叶结点。当用户创建了唯一索引就创建了唯一的约束,我们创建了索引这个数据结构,起到了唯一约束的这个功能从而保证了数据完整性。

以上是我看书时个人观点的总结,仅供参考

相关文章

  • 数据库中“约束”和“索引”的区别

    根据《MySQL技术内幕》中的解释: 约束更是一个逻辑的概念,用来保证数据的完整性,而索引是一个数据结构,既有逻辑...

  • MYSQL记录

    简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础和类型...

  • 五、SQL—索引/约束①

    在数据库系统中解决问题的技术就是索引与约束。索引用来提高数据的检索速度约束则用来保证数据的完整性 索引 索引是建立...

  • Mysql主键与唯一索引的区别

    主键索引和唯一索引的区别 -- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包...

  • PHP面试之数据库—创建高性能索引

    真题 简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础...

  • face17 mysql创建高性能索引

    mysql创建高性能索引 简单描述 mysql中 索引 主键 唯一索引 联合索引的区别对数据库性能有什么影响 创建...

  • 个人知识盲点1

    数据库事务数据库索引类型数据库索引的特点B树和B+树闭包问题python装饰器问题==和equals的详细区别过拟...

  • 数据库中主键和索引的区别

    什么是主键? 表中的每一行都应该具有可以唯一标识自己的一列(或一组列)。而这个承担标识作用的列称为主键。 主键的两...

  • 大厂面试系列(八):数据库mysql相关

    数据库相关 mysql索引的数据结构,加索引的原则 InnoDB和myiasm的区别,以及常见的mysql优化方案...

  • day04 索引 约束 触发器

    1 索引 什么是索引 索引的分类 创建索引 删除索引 合理使用索引提升查询效率 2 约束 什么是约束 约束的类型 ...

网友评论

    本文标题:数据库中“约束”和“索引”的区别

    本文链接:https://www.haomeiwen.com/subject/dciymctx.html