我有两张桌子(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;
由于
答案 0 :(得分:2)
我猜测查询优化器没有任何意义。为什么不尝试在电子邮件列上定义索引。
答案 1 :(得分:0)
一般来说,加入字符串比加入像int这样的较短数据类型更为昂贵。
您可以通过确保将两个电子邮件列编入索引来加快此查询。
答案 2 :(得分:0)
如果表A具有int ID字段,则表B应存储该ID,而不是再次存储该电子邮件字符串。这将减少数据库大小,并与索引一起提供比字符串给你更快的查询速度。