mysql join非常慢

时间:2010-07-21 14:56:41

标签: mysql join

我有两张桌子(MYISAM)

create table A (email varchar(50));
create table B( email varchar(50) key 'email' (email));

表A有130K记录 表B有20K记录

为什么这个sql语句需要很长时间(超过两分钟,然后我通过Ctrl + C中止查询) 声明是:

select count(*) from user A, tmp B where A.email=B.email;

由于

3 个答案:

答案 0 :(得分:2)

我猜测查询优化器没有任何意义。为什么不尝试在电子邮件列上定义索引。

答案 1 :(得分:0)

一般来说,加入字符串比加入像int这样的较短数据类型更为昂贵。

您可以通过确保将两个电子邮件列编入索引来加快此查询。

答案 2 :(得分:0)

如果表A具有int ID字段,则表B应存储该ID,而不是再次存储该电子邮件字符串。这将减少数据库大小,并与索引一起提供比字符串给你更快的查询速度。