【发布时间】:2013-02-28 22:46:36
【问题描述】:
我有一个类似这样结构的countries 表,在 iso2 列上有一个索引:
在进行普通选择查询时,iso2 索引工作正常:
但是当加入iso2上的另一个表时,它的行为很奇怪:
首先它说NULL possible_keys 但它仍然使用它?然后它还说 256 行,这是整个表。它在大更新时运行非常慢,所以我可以看出它没有使用索引。这里有什么问题?
编辑:另外,如果我从 iso2 索引中取出 id 列(参见第一张图片),那么它会说在连接中没有使用索引。
更多信息:我一直在尝试规范化我的数据并使用country_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 秒。
【问题讨论】:
标签: mysql sql phpmyadmin