何时应使用KEY、PRIMARY KEY、UNIQUE KEY和INDEX?
KEY
PRIMARY KEY
UNIQUE KEY
INDEX
k2arahey1#
KEY和INDEX在MySQL中是同义词。它们的意思是一样的。在数据库中,可以使用indexes来提高数据检索的速度。索引通常在JOIN、WHERE和ORDER BY子句中使用的列上创建。假设您有一个名为users的表,并且希望搜索姓氏为'Smith'的所有用户。如果没有索引,数据库将必须遍历该表的所有记录:这是很慢的,因为数据库中的记录越多,查找结果所需的工作就越多。2另一方面,索引可以帮助数据库快速跳转到保存“Smith”记录的相关页面。3这与我们人类通过电话簿目录查找某人的姓氏非常相似:我们不需要从头到尾搜索目录,只要我们按照一定的顺序插入信息,就可以快速跳到“S”页。主索引键和唯一索引键类似。主索引键是可以唯一识别数据列的数据栏或数据栏组合。它是unique key的特殊情况。表格最多只能有一个主索引键,但可以有多个唯一索引键。当您在数据栏上指定唯一索引键时,表格中的两个不同数据列不能有相同的值。另请注意,定义为主键或唯一键的列在MySQL中会自动建立索引。
JOIN
WHERE
ORDER BY
users
htrmnn0y2#
KEY和INDEX是同义词。当性能度量和EXPLAIN显示查询由于缺少索引而效率低下时,应添加索引。添加索引可以提高查询的性能(但会减慢对表的修改)。当您要将该数据行(或多个数据行)中的值限制为唯一时,应该使用UNIQUE,这样尝试插入重复的值会导致错误。PRIMARY KEY既是唯一的约束条件,也意味着列为NOT NULL。它用于为每一行给予一个标识。这对于通过外键约束条件与另一个表联接很有用。虽然表不一定要有PRIMARY KEY,但通常这是一个好主意。
jgzswidk3#
NULL
我们可以在一个表中声明一个*主键 ,但是一个表可以有多个唯一键 *(列赋值)。
zwghvu4y4#
PRIMARY KEY和UNIQUE KEY是相似的,只是功能不同。主键使表行唯一(即,不能有两行具有完全相同的键)。一个数据库表中只能有一个主键。唯一键使表行中的表列唯一(即,没有两个表行可以具有完全相同的值)。您可以具有多个唯一键表列(与主键不同,主键意味着表中只有一个表列是唯一的)。INDEX也创建了唯一性。MySQL(示例)将为被索引的列创建一个索引表。这样,当查询被索引的表列时,检索表行值就更容易了。缺点是,如果你做了很多更新/删除/创建,MySQL必须管理索引表(这可能是性能瓶颈)。希望这对你有帮助。
axkjgtzd5#
唯一键:没有两行相似的列主索引键:可唯一标识表中每一行的最小列数的集合(即在构成主键的所有列中没有两行是相似的)。表中可以有多个主键。如果存在唯一键,则它是主键(不是“the”主键)。如果不存在唯一键,则需要多个列值来标识行,如(first_name,last_name,father_name,mother_name)可以在某些表中构成主键。索引:用于优化查询。如果您要根据某列多次搜索或排序结果(例如,大多数人会按姓名而不是按学生的学籍号搜索学生),那么如果列值都被“索引”(例如,使用二叉树算法),则可以优化查询。
f4t66c6m6#
主键用于处理不同的表。这是关系数据库的基础。如果你有一个图书数据库,最好创建两个表- 1)books和2)authors,并使用INT主键“id”。然后在books中使用id而不是authors name。如果您不想有重复的项目,就可以使用唯一索引键。例如,您可能在图书数据表中有书名,而且想要确定每个书名只有一个项目。
i86rm4rw7#
主键-我们只能将表中的一个主键放入表中,并且在向表中输入值时不能将该列留空。唯一键-我们可以在一个表中放置多个唯一键,并且在向表中输入值时可以将该列留空。当我们应用主键和唯一键时,列采用唯一值(不相同)。
kuarbcqp8#
唯一键:
1.可以有多个值为空。1.唯一键中两个元组不能具有相同值1.可以将一个或多个唯一键组合起来形成主键,但反之则不行。
主索引键
1.可以包含多个唯一键。1.唯一表示元组。
omqzjyyz9#
| 主索引键|唯一键|| - -|- -|| 主键不能接受NULL值|唯一键可以接受NULL值,因此在唯一上下文中存在问题|| 主键不能包含重复值|唯一键也不能包含重复值|| 表中只能有一个主键|表中可以有多个唯一键|| 我们可以从一个或多个表字段生成主键|我们还可以从一个或多个表字段生成唯一键|| 缺省情况下,主键创建聚集索引|缺省情况下,唯一键创建非聚集唯一索引|| 它用于标识表中的每条记录|它可以防止在列中存储重复的条目|
9条答案
按热度按时间k2arahey1#
KEY
和INDEX
在MySQL中是同义词。它们的意思是一样的。在数据库中,可以使用indexes来提高数据检索的速度。索引通常在JOIN
、WHERE
和ORDER BY
子句中使用的列上创建。假设您有一个名为
users
的表,并且希望搜索姓氏为'Smith'的所有用户。如果没有索引,数据库将必须遍历该表的所有记录:这是很慢的,因为数据库中的记录越多,查找结果所需的工作就越多。2另一方面,索引可以帮助数据库快速跳转到保存“Smith”记录的相关页面。3这与我们人类通过电话簿目录查找某人的姓氏非常相似:我们不需要从头到尾搜索目录,只要我们按照一定的顺序插入信息,就可以快速跳到“S”页。主索引键和唯一索引键类似。主索引键是可以唯一识别数据列的数据栏或数据栏组合。它是unique key的特殊情况。表格最多只能有一个主索引键,但可以有多个唯一索引键。当您在数据栏上指定唯一索引键时,表格中的两个不同数据列不能有相同的值。
另请注意,定义为主键或唯一键的列在MySQL中会自动建立索引。
htrmnn0y2#
KEY和INDEX是同义词。
当性能度量和EXPLAIN显示查询由于缺少索引而效率低下时,应添加索引。添加索引可以提高查询的性能(但会减慢对表的修改)。
当您要将该数据行(或多个数据行)中的值限制为唯一时,应该使用UNIQUE,这样尝试插入重复的值会导致错误。
PRIMARY KEY既是唯一的约束条件,也意味着列为NOT NULL。它用于为每一行给予一个标识。这对于通过外键约束条件与另一个表联接很有用。虽然表不一定要有PRIMARY KEY,但通常这是一个好主意。
jgzswidk3#
NULL
值,但 * 唯一键 * 允许NULL
值。我们可以在一个表中声明一个*主键 ,但是一个表可以有多个唯一键 *(列赋值)。
zwghvu4y4#
PRIMARY KEY
和UNIQUE KEY
是相似的,只是功能不同。主键使表行唯一(即,不能有两行具有完全相同的键)。一个数据库表中只能有一个主键。唯一键使表行中的表列唯一(即,没有两个表行可以具有完全相同的值)。您可以具有多个唯一键表列(与主键不同,主键意味着表中只有一个表列是唯一的)。
INDEX
也创建了唯一性。MySQL(示例)将为被索引的列创建一个索引表。这样,当查询被索引的表列时,检索表行值就更容易了。缺点是,如果你做了很多更新/删除/创建,MySQL必须管理索引表(这可能是性能瓶颈)。希望这对你有帮助。
axkjgtzd5#
唯一键:没有两行相似的列
主索引键:可唯一标识表中每一行的最小列数的集合(即在构成主键的所有列中没有两行是相似的)。表中可以有多个主键。如果存在唯一键,则它是主键(不是“the”主键)。如果不存在唯一键,则需要多个列值来标识行,如(first_name,last_name,father_name,mother_name)可以在某些表中构成主键。
索引:用于优化查询。如果您要根据某列多次搜索或排序结果(例如,大多数人会按姓名而不是按学生的学籍号搜索学生),那么如果列值都被“索引”(例如,使用二叉树算法),则可以优化查询。
f4t66c6m6#
主键用于处理不同的表。这是关系数据库的基础。如果你有一个图书数据库,最好创建两个表- 1)books和2)authors,并使用INT主键“id”。然后在books中使用id而不是authors name。
如果您不想有重复的项目,就可以使用唯一索引键。例如,您可能在图书数据表中有书名,而且想要确定每个书名只有一个项目。
i86rm4rw7#
主键-我们只能将表中的一个主键放入表中,并且在向表中输入值时不能将该列留空。
唯一键-我们可以在一个表中放置多个唯一键,并且在向表中输入值时可以将该列留空。当我们应用主键和唯一键时,列采用唯一值(不相同)。
kuarbcqp8#
唯一键:
1.可以有多个值为空。
1.唯一键中两个元组不能具有相同值
1.可以将一个或多个唯一键组合起来形成主键,但反之则不行。
主索引键
1.可以包含多个唯一键。
1.唯一表示元组。
omqzjyyz9#
| 主索引键|唯一键|
| - -|- -|
| 主键不能接受
NULL
值|唯一键可以接受NULL
值,因此在唯一上下文中存在问题|| 主键不能包含重复值|唯一键也不能包含重复值|
| 表中只能有一个主键|表中可以有多个唯一键|
| 我们可以从一个或多个表字段生成主键|我们还可以从一个或多个表字段生成唯一键|
| 缺省情况下,主键创建聚集索引|缺省情况下,唯一键创建非聚集唯一索引|
| 它用于标识表中的每条记录|它可以防止在列中存储重复的条目|