我最近开始开发我使用sql数据库的第一个严肃的应用程序,我正在使用PHPMyAdmin来设置表。有几个可选的“功能”我可以给各种各样的列,我不完全确定他们做什么:
>主键
>索引
我知道PK是什么,如何使用它,但我想我的问题是,为什么需要一个 – 它与仅仅将列设置为“唯一”是不同的,除了你可以只有一个PK?只是让程序员知道这个值唯一标识记录?还是有一些特殊的属性呢?
我不知道“索引”是什么 – 事实上,我曾经看过它的唯一时间是(1)我的主键似乎被索引,(2)我听说索引与某种性能有关;你想要索引的列,但不是太多。如何决定哪些列索引,它究竟是做什么的?
编辑:应该有一个索引colums一个可能想要ORDER BY?
非常感谢,
马拉
解决方法
主键通常用于为记录创建数字“id”,并且该id列将自动递增。
例如,如果您有一个带有id字段的书籍表,其中id是主键,并且还设置为auto_increment(在“额外的PHPmyadmin”中),那么当您首先向书中添加一本书时,该表的ID将成为1’。下一本书的ID将自动为“2”,依此类推。通常,每个表格应至少有一个主键,以帮助识别和查找记录。
当您需要定期从表中检索某些信息时,将使用索引。例如,如果您有用户表,并且您需要访问电子邮件列,那么您可以在电子邮件上添加索引,这将导致访问电子邮件的查询更快。
但是,也有添加不必要的索引的缺点,所以添加这些只是真正需要被访问的列比别人更多。例如,UPDATE,DELETE和INSERT查询将会有更慢的索引,因为MysqL需要为每个索引列存储额外的信息。更多信息可以在this page找到。
编辑:是的,需要在ORDER BY中使用的列应该有索引,以及在WHERE中使用的列。