MySQL中键、主键、唯一键和索引的区别

kkbh8khc  于 2022-11-28  发布在  Mysql
关注(0)|答案(9)|浏览(162)

何时应使用KEYPRIMARY KEYUNIQUE KEYINDEX

k2arahey

k2arahey1#

KEYINDEX在MySQL中是同义词。它们的意思是一样的。在数据库中,可以使用indexes来提高数据检索的速度。索引通常在JOINWHEREORDER BY子句中使用的列上创建。
假设您有一个名为users的表,并且希望搜索姓氏为'Smith'的所有用户。如果没有索引,数据库将必须遍历该表的所有记录:这是很慢的,因为数据库中的记录越多,查找结果所需的工作就越多。2另一方面,索引可以帮助数据库快速跳转到保存“Smith”记录的相关页面。3这与我们人类通过电话簿目录查找某人的姓氏非常相似:我们不需要从头到尾搜索目录,只要我们按照一定的顺序插入信息,就可以快速跳到“S”页。
主索引键和唯一索引键类似。主索引键是可以唯一识别数据列的数据栏或数据栏组合。它是unique key的特殊情况。表格最多只能有一个主索引键,但可以有多个唯一索引键。当您在数据栏上指定唯一索引键时,表格中的两个不同数据列不能有相同的值。
另请注意,定义为主键或唯一键的列在MySQL中会自动建立索引。

htrmnn0y

htrmnn0y2#

KEY和INDEX是同义词。
当性能度量和EXPLAIN显示查询由于缺少索引而效率低下时,应添加索引。添加索引可以提高查询的性能(但会减慢对表的修改)。
当您要将该数据行(或多个数据行)中的值限制为唯一时,应该使用UNIQUE,这样尝试插入重复的值会导致错误。
PRIMARY KEY既是唯一的约束条件,也意味着列为NOT NULL。它用于为每一行给予一个标识。这对于通过外键约束条件与另一个表联接很有用。虽然表不一定要有PRIMARY KEY,但通常这是一个好主意。

jgzswidk

jgzswidk3#

  • 主键 * 不允许NULL值,但 * 唯一键 * 允许NULL值。

我们可以在一个表中声明一个*主键 ,但是一个表可以有多个唯一键 *(列赋值)。

zwghvu4y

zwghvu4y4#

PRIMARY KEYUNIQUE KEY是相似的,只是功能不同。主键使表行唯一(即,不能有两行具有完全相同的键)。一个数据库表中只能有一个主键。
唯一键使表行中的表列唯一(即,没有两个表行可以具有完全相同的值)。您可以具有多个唯一键表列(与主键不同,主键意味着表中只有一个表列是唯一的)。
INDEX也创建了唯一性。MySQL(示例)将为被索引的列创建一个索引表。这样,当查询被索引的表列时,检索表行值就更容易了。缺点是,如果你做了很多更新/删除/创建,MySQL必须管理索引表(这可能是性能瓶颈)。
希望这对你有帮助。

axkjgtzd

axkjgtzd5#

唯一键:没有两行相似的列
主索引键:可唯一标识表中每一行的最小列数的集合(即在构成主键的所有列中没有两行是相似的)。表中可以有多个主键。如果存在唯一键,则它是主键(不是“the”主键)。如果不存在唯一键,则需要多个列值来标识行,如(first_name,last_name,father_name,mother_name)可以在某些表中构成主键。
索引:用于优化查询。如果您要根据某列多次搜索或排序结果(例如,大多数人会按姓名而不是按学生的学籍号搜索学生),那么如果列值都被“索引”(例如,使用二叉树算法),则可以优化查询。

f4t66c6m

f4t66c6m6#

主键用于处理不同的表。这是关系数据库的基础。如果你有一个图书数据库,最好创建两个表- 1)books和2)authors,并使用INT主键“id”。然后在books中使用id而不是authors name。
如果您不想有重复的项目,就可以使用唯一索引键。例如,您可能在图书数据表中有书名,而且想要确定每个书名只有一个项目。

i86rm4rw

i86rm4rw7#

主键-我们只能将表中的一个主键放入表中,并且在向表中输入值时不能将该列留空。
唯一键-我们可以在一个表中放置多个唯一键,并且在向表中输入值时可以将该列留空。当我们应用主键和唯一键时,列采用唯一值(不相同)。

kuarbcqp

kuarbcqp8#

唯一键:

1.可以有多个值为空。
1.唯一键中两个元组不能具有相同值
1.可以将一个或多个唯一键组合起来形成主键,但反之则不行。

主索引键

1.可以包含多个唯一键。
1.唯一表示元组。

omqzjyyz

omqzjyyz9#

| 主索引键|唯一键|
| - -|- -|
| 主键不能接受NULL值|唯一键可以接受NULL值,因此在唯一上下文中存在问题|
| 主键不能包含重复值|唯一键也不能包含重复值|
| 表中只能有一个主键|表中可以有多个唯一键|
| 我们可以从一个或多个表字段生成主键|我们还可以从一个或多个表字段生成唯一键|
| 缺省情况下,主键创建聚集索引|缺省情况下,唯一键创建非聚集唯一索引|
| 它用于标识表中的每条记录|它可以防止在列中存储重复的条目|

相关问题