A表 ,B表A表中有字段 CERT 和B表中的CERT 有相同的,也有不同的。现在要对两个表进行匹配A表中的数据大概有30W,B表中的数据有50W请问匹配语句如何写,
现在问题主要是匹配的速度太慢了,我LIMIT 100还行,1000要等很长时间,是不是要调整MYSQL的MY.ini 第二个,B表中的字段NO 是A表中没有的,我想通过匹配来更新A表中的数据请问这个更新语句怎么写比较好

解决方案 »

  1.   

    现在问题主要是匹配的速度太慢了,我LIMIT 100还行,1000要等很长时间,是不是要调整MYSQL的MY.ini 应该不需要调整MySQL的my.ini中的参数,你先可以试一下在 cert上加上索引。具体要看你的SQL语句是如何写的。利用explain可以看一下MySQL是如何分析你的SQL语句的。第二个,B表中的字段NO 是A表中没有的,我想通过匹配来更新A表中的数据 请问这个更新语句怎么写比较好update a inner join b on a.cert=b.cert
    set a.no=b.no;多表更新的SQL语句请参见MySQL的官方文档。http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#update
      

  2.   

    alter table A add column NO varchar(100);update A 
    join B
    on A.cert=B.cert
    set A.NO=B.NO
    where A.NO is null;
      

  3.   

    我的查询时这样写的select a.cert, b.no from a, b where a.cert= b.cert这个应该是没有问题的CERT有可能是有重复的,加索引我试试
      

  4.   

    就这个查询都很慢,A中的CERT和B中的CERT,有的是相同的,有的是不同的
    是否可以考虑逐个更新A中的数据?