什么时候应该使用KEY
,PRIMARY KEY
,UNIQUE KEY
和INDEX
?
什么时候应该使用KEY
,PRIMARY KEY
,UNIQUE KEY
和INDEX
?
Answers:
KEY
而INDEX
在MySQL的同义词。他们是同一回事。在数据库中,您将使用索引来提高数据检索的速度。的索引在使用柱通常创建JOIN
,WHERE
和ORDER BY
条款。
假设您有一个名为的表,users
并且您要搜索姓氏为“ Smith”的所有用户。没有索引,数据库将不得不遍历表的所有记录:这很慢,因为数据库中拥有的记录越多,查找结果所要做的工作就越多。另一方面,索引将帮助数据库快速跳至保存“史密斯”记录的相关页面。这与我们人类如何通过电话簿目录查找姓氏的方式非常相似:只要我们按某种顺序插入信息,就不会从头到尾搜索目录。用于快速跳至“ S”页面。
主键和唯一键相似。主键是可以唯一标识行的列或列的组合。这是唯一密钥的特例。一个表最多可以有一个主键,但可以有多个唯一键。在列上指定唯一键时,表中的两个不同行都不能具有相同的值。
还要注意,定义为主键或唯一键的列会在MySQL中自动索引。
passengers
包含以下字段的表:(id, first_name, last_name, age, passport_number)
,通常会将该id
列设置为主键。主键自动是唯一键。主要区别在于表上只能有一个主键,并且该列不能包含NULL
值。无需将id
列设置为,UNIQUE
因为将其设置为主键可以自动保证其唯一性...然后,您也可以将其设置passport_number
为UNIQUE
不超过一名乘客...
NULL
毫无问题地插入该列。
KEY和INDEX是同义词。
当性能测量时,您应该添加一个索引,并且EXPLAIN向您显示由于缺少索引,查询效率低下。添加索引可以提高查询的性能(但可能减慢对表的修改)。
当您要限制该列(或多个列)中的值唯一时,应使用UNIQUE,以便尝试插入重复值会导致错误。
PRIMARY KEY既是唯一约束,也意味着该列为NOT NULL。它用于为每一行赋予一个标识。这对于通过外键约束与另一个表联接很有用。虽然不需要表具有主键,但这通常是一个好主意。
PRIMARY KEY
AND UNIQUE KEY
具有相似的功能,只是功能不同。主键使表行唯一(即,不能有两行具有完全相同的键)。数据库表中只能有1个主键。
唯一键使表行中的表列唯一(即,没有2个表行可以具有相同的确切值)。您可以有1个以上的唯一键表列(与主键不同,这意味着表中只有1个表列是唯一的)。
INDEX
也创造了独特性。MySQL(示例)将为被索引的列创建索引表。这样,当在该索引表列上查询查询时,检索表行值会更容易。缺点是,如果您进行许多更新/删除/创建,则MySQL必须管理索引表(这可能是性能瓶颈)。
希望这可以帮助。
UNIQUE KEY
可以是,NULL
但PRIMARY KEY
不能为NULL
。
唯一键:没有两行相似的列
主键:可以唯一标识表中每一行的最小列数的集合(即,构成主键的所有列中没有两行是相似的)。一个表中可以有多个主键。如果存在唯一键,则它是表中的主键(不是“ the”主键)。如果不存在唯一键,则将需要多个列值来标识行,例如(first_name,last_name,father_name,mother_name)在某些表中可以构成主键。
索引:用于优化查询。如果您要根据某个列多次搜索或对结果进行排序(例如,大多数人将按姓名而不是按卷名来搜索学生),则如果列的值都为“索引”,例如使用二叉树算法。
主键 -我们只能在一个表上将一个主键放到表中,并且在将值输入到表中时不能将该列留空。
唯一键 -我们可以在一个表上放置多个唯一键,并且在将值输入到表中时可以将该列留空。当我们应用主键和唯一键时,列采用唯一值(不相同)。
唯一键:
首要的关键