在主键+外键上创建多索引是否有性能优势?

时间:2011-09-26 11:38:10

标签: mysql performance indexing database-optimization

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

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

更新:我正在使用InnoDB表。

1 个答案:

答案 0 :(得分:2)

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

访问路径为:

  1. 查看primary = n
  2. 的主键索引
  3. 从表中获取单个匹配的行
  4. 使用表格中的行检查任何其他条件
  5. 如果您对主键进行了范围扫描并希望将其缩小到另一列,那么复合索引可能会有所帮助。