sql - SQL:主键和索引到底做什么?

标签 sql phpmyadmin

我最近开始开发使用SQL数据库的第一个严肃的应用程序,并且正在使用phpMyAdmin设置表。我可以给几个专栏提供几个可选的“功能”,但我不确定它们的作用:

  • 主键
  • 索引

  • 我知道PK的用途以及如何使用它,但是我想我的问题是为什么一个人需要一个PK-它与仅将列设置为“Unique”有什么不同,除了您可以只有一个PK?仅仅是让程序员知道该值可以唯一地标识记录吗?还是也有一些特殊的属性?

    我不知道“索引”的作用-实际上,我见过的唯一一次使用(1)我的主键似乎已被索引,并且(2)我听说索引在某种程度上与性能有关;您想要索引的列,但不要太多。如何确定要索引的列,以及它的作用是什么?

    编辑:应该一个索引列可能要ORDER BY吗?

    非常感谢,

    马拉

    最佳答案

    主键通常用于为您的记录创建数字“id”,并且此id列会自动递增。

    例如,如果您有一个带有books字段的id表,其中id是主键,并且还设置为auto_increment(在phpmyadmin中为'Extra'下),那么当您首次向该表中添加书籍时,该ID将变为1'。下本书的ID将自动为“2”,依此类推。通常,每个表应至少具有一个主键,以帮助轻松地识别和查找记录。

    当您需要定期从表中检索某些信息时,将使用索引。例如,如果您有一个users表,并且需要大量访问email列,则可以在电子邮件上添加索引,这将使查询访问电子邮件的查询更快。

    但是,添加不必要的索引也有缺点,因此,仅在确实需要比其他列更需要访问的列上添加此索引。例如,随着索引的增加,UPDATEDELETEINSERT查询会稍微慢一些,因为MySQL需要为每个索引列存储额外的信息。可以在this page上找到更多信息。

    编辑:是的,很多需要在ORDER BY中使用的列应该具有索引,以及在WHERE中使用的那些列。

    关于sql - SQL:主键和索引到底做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315481/

    相关文章:

    sql - 更新如何工作?

    mysql - 连接到 Azure 应用服务中的应用中的 MySQL 时出现访问被拒绝错误

    mysql - 将 MySQL 数据库连接到二维码

    php - MySQL创建触发器将内容插入同一数据库中的另一个表中

    mysql - 如何通过 C 连接到 SQL?

    sql - MySQL中的简单数学最大值函数

    SQL 表性能 - 大表

    mysql - 在 phpmyadmin 中导入数据库时​​出错

    sql - 如何在 phpMyAdmin 中为我自己的 cms 网站加密密码

    mysql - phpmyadmin 无法识别我的 sql