请问各位大侠,帮我解决一个问题
如题:有两张表A表(id name)和B表(id name),拿B表和A表对比,如果有重复的name,则把重复的name放入C表中,且把A表中有重复name的记录删除,由于A和B表有成千上万条记录,如何提高郊率?
在此先谢谢各位大侠了!!

解决方案 »

  1.   

    在 A, B 表的 name 上创建索引。
      

  2.   

    你的意思是A表中name值在b表中name有出现的,则把这些重复值插入到一个新表C中?
    同时把A表中这些对应的记录删除掉?如果是这样的话,那在2个表的name列上建立索引,然后直接内联接处理就可以了。
      

  3.   

    感谢1楼仁兄提供的建议,小弟是新手,
    不知该怎么写SQL语句!
    望哪位仁兄,写几条SQL语句给小弟看看,在此谢过了!
      

  4.   

    如果有重复的name,则把重复的name放入C表中insert into C(id,name)
    select id,name from A where exists (select 1 from B where name = A.name)且把A表中有重复name的记录删除
    delete A from A inner join B on a.name=b.name;
    你的问题不是 "如何提高对数据库的循环查找速度?" 
    而是 "如何找出重复记录!"
    问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
      

  5.   

    试下是这样吗:create index ix_name1 on A表(name);
    create index ix_name2 on B表(name);create table C表 
    as 
    select a.name A表 a,B表 b where a.name=b.name;delete a from A表 a,B表 b where a.id=b.id;