什么时候使用每种MySQL索引类型?
对于非常大的表,索引列是否可以提高性能?
主键是-顾名思义- 表的主键,并且应该是一列,通常用于选择该表的行。主键始终是唯一键(唯一标识符)。主键不限于一列,例如在参考表(多对多)中,具有包含两列或更多列的主键通常是有意义的。
唯一索引可确保您的DBMS不接受此列的重复条目。您问“外键?” 不!这将是无用的,因为根据定义,外键易于重复(一对多,多对多)。
可以将其他索引放在通常用于SELECTS(和JOINS)的列上,对于外键通常是这种情况。在许多情况下,如果外键已建立索引,则SELECT(和JOIN)查询会更快。
但是请注意-正如SquareCog所阐明的-索引会根据对数据的任何修改而更新,因此,是的,添加更多索引会导致INSERT / UPDATE性能下降。如果索引没有更新,则取决于优化器是决定对索引还是对原始表运行查询,您将获得不同的信息-这是非常不希望的情况。
这意味着,您应该仔细评估索引的使用情况。在此基础上肯定有一件事: 必须避免使用未使用的索引。 删除!