我有以下数据库结构:
一个例子是:(1,“Titanic”,1994,“James Cameron”,02:44:00)
我希望通过四个标准中的任何三个找到匹配项,例如:
1. name + year + director
2. name + year + runtime
3. year + director + runtime
如果我创建了一个索引,这对于优化查询是否足够?
ALTER TABLE myTable ADD INDEX (name, year, director, runtime)
或者,我是否需要为每个组合创建一个索引?
ALTER TABLE myTable ADD INDEX (name, year, director)
ALTER TABLE myTable ADD INDEX (name, year, runtime)
ALTER TABLE myTable ADD INDEX (year, director, runtime)
我显然更喜欢使用第一个,但是会在这里建议吗?为什么一个人比另一个更好?这是一个InnoDB表。
答案 0 :(得分:1)
考虑id
是具有默认唯一索引的主键;如果您创建一个包含4列的索引,那么就足够了,因为您获得的是Covering Index
。
ALTER TABLE myTable ADD INDEX (name, year, director, runtime)