lsd_base=> insert into panj1 select * from td_user_info where usr_id > 5000000 and mod(usr_id,40)=1;
INSERT 0 337943
Time: 58468.442 ms
lsd_base=> \copy (select * from td_user_info where usr_id > 5000000 and mod(usr_id,40)=1) to '/tmp/panjtest1.sql'
Time: 4864.592 ms
lsd_base=> \copy panj2 from '/tmp/panjtest1.sql'
Time: 4972.855 ms
lsd_base=> insert into panj1 select * from td_user_info where usr_id < 5000000;
INSERT 0 621278
Time: 141444.356 ms
lsd_base=> \copy (select * from td_user_info where usr_id < 5000000) to '/tmp/panjtest1.sql'
Time: 5969.146 ms
lsd_base=> ^C
lsd_base=> create table panj2 (like td_user_info including all);
CREATE TABLE
Time: 192.761 ms
lsd_base=> \copy panj2 from '/tmp/panjtest1.sql'
Time: 12131.699 ms
主要是,原先咱們的一個表的數據太大了,想把這個表的數據進行分表,而後要把原先的表裏的數據按規則放到不一樣的分表裏去,由於分表也是在同一個數據庫中,因此有個方案就是直接執行sql語句insert into goaltablename select * from sourcetablename where condition; 還有一個方案就是先copy to 再 copy from
通過測試 copy 的方案速度快於insert的方案