-建立源表
作成テーブルt_source
(
ITEM_IDのINT、
CREATED_TIME日時、
MODIFIED_TIME日時、
ITEM_NAME VARCHAR(20)、
他のVARCHAR(20)
)。
-建立目标表
t_sourceなどの作成、テーブルt_target。
-生成100万测试数据、其中有50万CREATED_TIME ITEM_NAME和重复
デリミタ//
プロシージャsp_generate_dataを作成する(http://www.amjmh.com)が
始まる
設定@i:= 1;
@iながら<= 500000はない
@created_time設定:= DATE_ADD( '2017年1月1日'、@i秒間隔)。
@modified_time設定:= @created_time。
設定@item_name:(I @ 'A'、)=連結;
t_sourceに挿入
値(I @、@ CREATED_TIME、MODIFIED_TIME @、@ ITEM_NAME、 'その他');
のSET @i:I = + 1;
しばらくEND;
COMMIT;
SETが@last_insert_id:= 500000;
INSERT INTOをt_source
のitem_id + @last_insert_idを選択して、
CREATED_TIME、
DATE_ADD(MODIFIED_TIME、秒間隔@last_insert_id)、
ITEM_NAME、
'その他'
t_sourceから;
COMMIT;
エンド
//
DELIMITER;
(sp_generate_dataコール);
-ソーステーブルの主キー、または全く一意性制約、同じ2が存在してもよいですデータは、レコードこの状況をシミュレートを挿入します。
t_source SELECT * FROM t_source挿入 ITEM_IDは= 1;
記録1000001、重複送信先テーブルのレコードを持つソーステーブル500,000でなければなりません。
t_sourceからのmysql> SELECT COUNT(*)は、カウント(個別のCREATED_TIME、ITEM_NAME)。
+ ---------- + -------------------------------------- - +
| COUNT(*)| 数(個別のCREATED_TIME、ITEM_NAME)|
+ ---------- + -------------------------------------- - +
| 1000001 | 500000 |
+ ---------- + -------------------------------------- - +
セット内の1行(1.92秒)
---------------------