无法使用索引连接两个表

时间:2011-03-10 19:10:25

标签: mysql indexing query-optimization

我只是无法让表索引在此表连接中使用自己:

explain select n.* from npi n,npi_taxonomy nt where n.NPI=nt.NPI_CODE;

以下是我得到的解释输出: enter image description here

如您所见,它在possible_keys列中找到了键,但键列为空。请帮忙。

2 个答案:

答案 0 :(得分:0)

为什么不使用显式连接

SELECT n.* FROM npi n  
INNER JOIN npi_taxomoty nt ON (n.NPI = nt.NPI_CODE)

或使用左连接:

SELECT n.* FROM npi n
LEFT JOIN npi_taxomoty nt ON (n.NPI = nt.NPI_CODE)

如果第一个查询返回结果,但第二个 ,则n.NPI和nt.NPI_CODE之间没有匹配。

作为旁注,我觉得很奇怪你会给一个字段(NPI)和一个表(npi)同名。这令人困惑。

答案 1 :(得分:0)

您的查询会点击表NPI中的所有行,并且您正在从中选择所有列 为什么要让MySQL在该表上使用索引?

我非常确定如果您只在选择列表中包含列npi,您将获得所需的行为。