我正在尝试进行以下选择:
select `table1`.`index2`
from `table1`, `table2`
where `table1`.`index1` = `table2`.`index1`
and `table1`.`index2` != `table2`.`index2`
index1
和index2
为varchar(255)
并已编入索引。两个表都包含大约5万行
这个查询花了10分钟,我杀了它,因为它太长了
为什么需要这么长时间?
答案 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`)
解决了我的问题。第一个做什么?