2

如果我有一个具有主键和外键的表,并且经常使用包含两者的查询来完成搜索(...WHERE primary=n AND foreign=x),那么使用这两个键在 MySQL 中创建多个索引是否有任何性能优势?

我知道它们已经是两个索引,但是我不确定当包含在另一个表中时外键是否仍被视为索引。例如,MySQL会去主键,然后比较外键的所有值,直到找到正确的值,还是因为外键也是索引而已经知道它在哪里?

更新:我正在使用 InnoDB 表。

4

1 回答 1

2

对于相等比较,您无法对主键索引进行改进(因为此时最多只有一行可以匹配)。

访问路径将是:

  1. 查看primary = n的主键索引
  2. 从表中获取单个匹配行
  3. 使用表中的行检查任何其他条件

如果您对主键进行范围扫描并希望通过另一列缩小范围,则复合索引可能会有意义。

于 2011-09-26T11:43:10.943 回答