你的表是有索引的,所以HINT不起作用。 如果你的表是分区的,哪么可以新建一个分区,再建一个结构一样的TMP表, 没有索引,往TMP表中导数据。删除你的表中与TMP表有重复的数据(慢在此处), 把TMP表与新建的分区做物理交换(EXCHANGE)(速度快), 再给你的表的分区作LOCAL INDEX 但操作要多点。对于特大的表,导入数据,或从结构相同(没有索引)的小表提取数据, 就是对大表分区,“直接导”入小表,分区与小表交换。
假设有两个表,table1,table2如果要把table2的数据插入或更新到table1 我想你可不可以先在table1查询和table2中含有相同id的记录,查询到后删除,接着再插入所有数据 delete from table1 where id in(select id from table2)---删除 insert into table2 (select * from table2) ----插入 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 如有好的办法,我也想知道,
如果是UPDATE部分特别慢,那么在UPDATE前建立索引。
其实速度与INSERT+UPDATE式操作没有直接联系。
如果你的表是分区的,哪么可以新建一个分区,再建一个结构一样的TMP表,
没有索引,往TMP表中导数据。删除你的表中与TMP表有重复的数据(慢在此处),
把TMP表与新建的分区做物理交换(EXCHANGE)(速度快),
再给你的表的分区作LOCAL INDEX
但操作要多点。对于特大的表,导入数据,或从结构相同(没有索引)的小表提取数据,
就是对大表分区,“直接导”入小表,分区与小表交换。
我想你可不可以先在table1查询和table2中含有相同id的记录,查询到后删除,接着再插入所有数据
delete from table1 where id in(select id from table2)---删除
insert into table2 (select * from table2)
----插入
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如有好的办法,我也想知道,