gpt4 book ai didi

mysql - MySQL 中 INDEX、PRIMARY、UNIQUE、FULLTEXT 之间的区别?

转载 作者:行者123 更新时间:2023-11-30 22:57:22 26 4
gpt4 key购买 nike

MySQL建表时PRIMARY、UNIQUE、INDEX、FULLTEXT有什么区别?

我将如何使用它们?

最佳答案

差异

  • KEYINDEX 指的是普通的非唯一索引。索引的非不同值是允许的,因此索引可能包含在索引的所有列中具有相同值的行。这些索引不会对您的数据施加任何限制,因此它们仅用于访问 - 用于快速访问特定范围的记录而无需扫描所有记录。

  • UNIQUE 指索引的所有行都必须唯一的索引。也就是说,对于此索引中的所有列,同一行可能与另一行不具有相同的非 NULL 值。除了用于快速达到某些记录范围外,UNIQUE 索引还可用于对数据实现约束,因为数据库系统不允许在插入或更新数据时破坏不同值规则。

    您的数据库系统可能允许将 UNIQUE 索引应用于允许 NULL 值的列,在这种情况下,如果两行都包含 NULL 值,则允许它们相同(这里的基本原理是 NULL 被认为不等于本身)。但是,根据您的应用程序,您可能会发现这是不受欢迎的:如果您希望避免这种情况,您应该禁止相关列中的 NULL 值。

  • PRIMARY 的作用与 UNIQUE 索引完全一样,只是它总是被命名为“PRIMARY”,并且在一张表上可能只有一个(应该 始终是一个;尽管某些数据库系统不强制执行此操作)。 PRIMARY 索引旨在作为唯一标识表中任何行的主要方式,因此与 UNIQUE 不同,它不应用于任何允许 NULL 值的列。您的 PRIMARY 索引应该位于足以唯一标识一行的最少数量的列上。通常,这只是一个包含唯一自动递增数字的列,但如果有任何其他内容可以唯一标识一行,例如国家列表中的“国家/地区代码”,您可以改用它。

    某些数据库系统(例如 MySQL 的 InnoDB)会在 PRIMARY KEY 的 B 树索引中内部存储表的实际记录。

  • FULLTEXT 索引不同于上述所有索引,并且它们的行为在数据库系统之间有很大差异。 FULLTEXT 索引仅对使用 MATCH()/AGAINST() 子句完成的全文搜索有用,这与上述三个索引不同——它们通常在内部使用 b 树实现(允许选择、排序或从最左列开始的范围)或哈希表(允许从最左边的列开始选择)。

    其他索引类型是通用的,而 FULLTEXT 索引是专用的,因为它的用途很窄:它仅用于“全文搜索”功能。

相似点

  • 所有这些索引中可能有不止一列。

  • 除了 FULLTEXT 之外,列的顺序很重要:要使索引在查询中有用,查询必须使用索引中从左边开始的列 - 它不能只使用第二个,索引的第三或第四部分,除非它还使用索引中的先前列来匹配静态值。 (要使 FULLTEXT 索引对查询有用,查询必须使用索引的 所有 列。)

关于mysql - MySQL 中 INDEX、PRIMARY、UNIQUE、FULLTEXT 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25703818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com