说我有如下查询:
SELECT * FROM users WHERE username = 'test' AND somethingelse = 'test'
我想知道是否有必要对两列进行索引以进行优化。 MySQL是否首先找到值为'test'的所有用户名列,然后使用'test'搜索某些列的结果?还是会同时发生?
答案 0 :(得分:4)
是的,你应该。 WHERE子句中出现的每列和列组合都应该有一个有效搜索的索引。
对于主键字段,您可以使用它,因为通过声明主键为这些字段创建了索引。其他列要求您为它们编制索引。
因此,您将拥有用户名和某些列的索引。
如果用户名必须是唯一的,那么它可能有自己的索引。