【发布时间】:2016-03-11 22:10:48
【问题描述】:
我有以下数据库结构:
- 身份证
- 姓名
- 年
- 导演
- 运行时
示例条目为:(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 表。
【问题讨论】:
-
您可以在所有 4 列上添加 FULLTEXT 索引并在 BOOLEAN MODE 中使用 WHERE MATCH(all 4 columns) AGAINST (words) 进行搜索
-
@Mihai 我正在使用 InnoDB。
-
在 5.6 或更高版本上,您可以在 innoDB 上使用 FULLTEXT