我有一个相当简单的 mysql 查询,其中包含一些内部联接,然后是 where 子句。我已经为连接中使用的所有列以及主键创建了索引。我还有一个包含 IN 运算符的 where 子句。当只有 5 个或更少的 id 被传递到 IN 子句时,查询优化器使用我的索引之一在合理的时间内运行查询。当我使用解释时,我看到类型是范围,键是 PRIMARY。我的问题是,如果我在 IN 子句中使用超过 5 个 id,优化器会忽略所有可用索引,并且查询运行速度非常慢。当我使用解释时,我看到类型是 ALL,键是 NULL。
有人可以说明这里发生的事情以及我如何解决这个问题。
谢谢