两个表上的简单索引连接需要很长时间

时间:2011-08-03 16:54:08

标签: mysql join

我正在尝试进行以下选择:

select `table1`.`index2`
    from `table1`, `table2`
    where `table1`.`index1` = `table2`.`index1`
        and `table1`.`index2` != `table2`.`index2`

index1index2varchar(255)并已编入索引。两个表都包含大约5万行 这个查询花了10分钟,我杀了它,因为它太长了 为什么需要这么长时间?

2 个答案:

答案 0 :(得分:0)

此查询是否具有最佳性能?使用左外连接或内连接有时可以改进查询。

select `table1`.`index2`
from `table1`
inner join table2 on `table1`.`index1` = `table2`.`index1`
    and `table1`.`index2` != `table2`.`index2`

答案 1 :(得分:0)

发现问题,与查询无关 看起来像创建像

这样的索引
index(`index1`, `index2`)

创建某种愚蠢的索引,但创建它像

index(`index1`),
index(`index2`)

解决了我的问题。第一个做什么?