如果我有一个具有主键和外键的表,并且经常使用包含(...WHERE primary=n AND foreign=x)
的查询进行搜索,那么使用这两个键在MySQL中创建多个索引是否有任何性能优势?
我知道它们都已经是索引,但我不确定外键是否仍然被视为包含在另一个表中的索引。例如,MySQL会转到主键,然后比较外键的所有值,直到找到正确的键,或者它已经知道它在哪里,因为外键也是索引?
更新:我正在使用InnoDB表。
答案 0 :(得分:2)
对于相等比较,您无法对主键索引进行改进(因为此时,最多只能有一行可以匹配)。
访问路径为:
如果您对主键进行了范围扫描并希望将其缩小到另一列,那么复合索引可能会有所帮助。