多个where子句需要多个索引吗?

时间:2010-08-04 10:11:15

标签: mysql indexing

说我有如下查询:

SELECT * FROM users WHERE username = 'test' AND somethingelse = 'test'

我想知道是否有必要对两列进行索引以进行优化。 MySQL是否首先找到值为'test'的所有用户名列,然后使用'test'搜索某些列的结果?还是会同时发生?

1 个答案:

答案 0 :(得分:4)

是的,你应该。 WHERE子句中出现的每列和列组合都应该有一个有效搜索的索引。

对于主键字段,您可以使用它,因为通过声明主键为这些字段创建了索引。其他列要求您为它们编制索引。

因此,您将拥有用户名和某些列的索引。

如果用户名必须是唯一的,那么它可能有自己的索引。