MySQL多索引问题

我有一个表(用户),列为

id INT AUTOINVREMENT PRIMARY
uid INT index
email CHAR(128) UNIQUE
activated TINYINT 

而且我需要像这样查询该表:

SELECT * FROM users WHERE uid = ? AND activated = 1

我的问题是,由于在’uid’列上设置了索引,为了获得上述查询的最佳性能,我是否还需要在’activated’列上设置另一个索引?该表(将是一个很大的表)将被’INSERT’,’UPDATE’语句以及’SELECT’语句大量访问.

正如我从其他来源了解到的那样,索引与“ INSERT”和“ UPDATE”语句相反,因此,如果uid列上的索引足以用于上述查询,则无需为“插入”设置另一个激活的索引&更新性能的缘故.

解决方法:

无论如何,MySQL每个表只会使用1个索引,因此拥有一个额外的索引将无济于事.

但是,如果您想要真正的最佳性能,请按以下顺序在两列上定义索引:(例如,两列之间有1个索引)

index_name (uid, activated)

这将允许对uid或uid AND激活的优化查找.

上一篇:python-使用Pandas中的方法链接分配给列的子集


下一篇:MySQL自动增量自定义值