想请教大虾们一个问题。
我现在有两个表。
表一有一个字段A,里面存储的是大概10万条左右的流水编码,由17个字母+数字组成。
表2的字段B和表一的字段A结构一样不同的只是数量。20万条。现在我要实现找出同时存在于字段A,B里面的数据(A,B字段里面肯定会有相同项的数据,但是AB字段的数据排序完全不相同),运行如下语句select A from [表一] where A IN (select B from [表二])但是对于这样庞大的数据,MYSQL似乎就吃不消了。想问问这样的情况难道真的MYSQL不能查找?麻烦大家想想办法,感激不尽啊。

解决方案 »

  1.   

    在A、B上建立索引
    select A from [表一] inner join [表二] b on A=bect B 
      

  2.   

    mysql的in子查询语句有很大缺陷,所以需要改成表连接来做
      

  3.   

    在数据量比较大的时候尽量别用IN。使用内联操作吧。
    首先可以在A和B表里面对流水编码code字段建立索引。
    alter table A add index code(code);
    alter table B add index code(code);
    此时就可以查询了,select a.code from A as a, B as b where a.code=b.code;
      

  4.   

    select A from [表一] inner join [表二]  on  [表一] .A= [表二].B 
      

  5.   

    select A from [表二] inner join [表一] on  [表二].B= [表一].A 
      

  6.   

    select A from [表二] inner join [表一] on [表二].B= [表一].A 
      

  7.   

    楼主可以看看:inner join on, left join on, right join on 对你有帮助。
    http://www.cnblogs.com/sufei/archive/2009/03/18/1415103.html