Mysql 索引是SQL中的约束吗?

Mysql 索引是SQL中的约束吗?,mysql,sql,database,indexing,constraints,Mysql,Sql,Database,Indexing,Constraints,很少有文档说索引是一种约束类型,但其他文档并没有在约束部分包含索引,所以,索引是否是一种约束是值得怀疑的 有人能分享你的观点吗 Constraint 索引是一个模式对象 索引是数据库搜索引擎可以用来加速数据检索的特殊查找表。简单地说,索引是指向表中数据的指针。索引 数据库非常类似于书后面的索引 索引用于更快地从数据库检索数据。用户看不到索引,它们只是用来加速搜索/查询 在表列上定义主键和唯一约束时,将自动创建索引。例如,当您创建具有唯一约束的表时,数据库引擎会自动创建非聚集索引。如果配置

很少有文档说索引是一种约束类型,但其他文档并没有在约束部分包含索引,所以,索引是否是一种约束是值得怀疑的

有人能分享你的观点吗

Constraint
  • 索引是一个模式对象

  • 索引是数据库搜索引擎可以用来加速数据检索的特殊查找表。简单地说,索引是指向表中数据的指针。索引 数据库非常类似于书后面的索引

  • 索引用于更快地从数据库检索数据。用户看不到索引,它们只是用来加速搜索/查询

  • 在表列上定义主键和唯一约束时,将自动创建索引。例如,当您创建具有唯一约束的表时,数据库引擎会自动创建非聚集索引。如果配置主键,数据库引擎将自动创建聚集索引,除非聚集索引已经存在。当您尝试对现有表强制执行主键约束且该表上已存在聚集索引时,SQL Server将使用非聚集索引强制执行主键


  • MySQL为三种类型的约束创建索引:

    • 主键约束创建唯一索引
    • 唯一约束创建唯一索引
    • 外键约束在引用列上创建索引
    前两个在所有数据库中都很常见


    索引是一种约束吗?不太可能,但唯一索引与相同列上的唯一约束具有相同的效果。因此,您可以将唯一索引视为实现唯一约束。也就是说,我认为从另一个角度更好地理解因果关系:使用唯一索引实现唯一约束。

    很少有文档说索引是一种约束类型,或者您理解不正确,或者此文档是错误的。索引根本不是关系理论的对象。是存储对象提高了操作效率。@Akina检查这些文档。。。我同意阿基娜的观点。但如果一个“索引”被称为“约束”,又会怎样呢?无论如何,这两个链接都不是MySQL官方文档。Tutorialspoint是某人非常简短的参考手册,在某种程度上,是教程。我浏览了其他几页--我对一些事情进行了反驳,但没有看到任何危险的、令人讨厌的陈述。w3schools非常简洁,试图对这些版本不可知。我发现MySQL至少有一个语法错误(这在其他品牌中可能会起作用。因此,对信任该网站要谨慎。@RickJames我也是,但在查看这些文档后,会对“索引是否是约束条件?”感到困惑。另一件要注意的事(在MySQL中):
    主键
    唯一的
    是一个
    索引
    =
    。@RickJames主键实体由两部分组成。第一部分是约束包:唯一约束+非NOLL约束。第二部分是一个允许有效检查这些约束的索引。从形式上讲,这些约束可以在没有约束的情况下进行检查索引,是吗?但是这个过程太慢了-所以索引的创建/使用是强制性的。这个答案不包含任何关于“约束”的主要问题的联系,它甚至没有提到这个词。PK是与数据“集群化”的(对于InnoDB)。MyISAM不集群;其他供应商有集群作为一个选项。