有三个表 A1、A2、A3
A1表:
CHELXH  HAOPHM ....
1        苏A12001
2        苏A23883
A2和A3表结构一样,A2表:
GUIFEIXH  CHELXH   PIAOJHM .....
1         1        G91348
2         1        G64182
3         2        G31294
4         34       G28411
.........................A3现在是空表,要求把A2表中CHELXH字段数据在A1表中存在的数据存到A3中,用
Insert Into A3 SELECT *      
FROM A2  where CHELXH in (select CHELXH from A1) 应该可以。但是现在A1、A2表中数据量很大,执行这条语句花费时间太长,请问怎么优化比较好呢?

解决方案 »

  1.   

    改写为
    Insert Into A3 SELECT A2.* from A2,A1 where A2.CHELXH=A1.CHELXH;
    试试。最好先对三个表做分析,然后查看上面SQL的执行计划。
      

  2.   

    如果要删除A2表中CHELXH字段数据在A1表中不存在的数据,用delete from A2 where CHELXH not in (select CHELXH from A1) 同样很慢,怎样写好?
      

  3.   

    A1和A2,CHELXH列上有index吗?
    A3表有约束吗?先disable,insert完成后再放开.