テストテーブルとデータを作成します。

-建立源表
作成テーブル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秒)
---------------------

おすすめ

転載: www.cnblogs.com/hyhy904/p/11311204.html