1. 複製表結構及其數據: create table table_name_new as select * from table_name_old ide
2. 只複製表結構: create table table_name_new as select * from table_name_old where 1=2; 日誌
或者: create table table_name_new like table_name_old 3. 索引
只複製表數據:若是兩個表結構同樣:insert into table_name_new select * from table_name_old 事務
若是兩個表結構不同:insert into table_name_new(column1,column2...) select column1,column2... from table_name_oldpasting資源
解決方法:it
一、直接執行delete from pers where persnbr>=100000000,結果速度超慢。table
二、利用TRUNCATE語法:ast
create table pers_TEMP as select * from pers where persnbr<100000000;--把小於100000000的記錄備份一下,查詢語句會比較快class
truncate table pers;--將pers中的數據所有清除,速度很快select
insert into pers select * from pers_TEMP ; --將備份的數據從新插入到pers表中
truncate和delete對比
一、truncate比delete速度快不少,且使用的系統和事務日誌資源少。這是由於truncate經過釋放存儲表數據所用的數據頁來刪除數據,而且只在事務日誌中記錄頁的釋放;而delete語句每次刪除一行,並在事務日誌中爲所刪除的每一行記錄一項。
二、truncate是ddl語句,delete是dml語句。和其它ddl語句同樣,truncate將會被隱式提交,因此不能對truncate使用rollback命令;而delete語句每條記錄的刪除都會被記錄在事務日誌中,因此能夠被rollback。
三、truncate語句將會把表的索引值從新設置成初始大小,而delete不能。