我有一个countries这样的表,在 iso2 列上有一个索引:

进行普通选择查询时,iso2 索引工作正常:

但是当与 iso2 上的另一个表连接时,它的行为非常奇怪:

首先它说NULLpossible_keys 但它仍然使用它?然后它还说 256 行这是整个表。它在大更新时运行非常慢,所以我可以看出它没有使用索引。这里有什么问题?
编辑:另外,如果我从 iso2 索引中取出id列(参见第一张图片),那么它会说在连接上没有使用索引。
更多信息:我一直在尝试规范化我的数据并使用 acountry_id而不是country. country_id当我注意到它变得非常缓慢时,我正在更新表格。一些解释让我发现索引没有被使用。也许它与 iso2 是 char(2) 有关?
我正在像这样填充 country_id:
UPDATE leads
LEFT JOIN countries on leads.country=countries.iso2
SET leads.country_id=countries.id
leads对于表上的大约 100k 行,此查询花费了将近 40 秒。