mysql挿入最適化

1341 ワード

  • SQL文が複数のデータを挿入します.よく使われる挿入文は、
  • などです.
    INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);  
    INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);  
    

    次のように変更します.
    INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1);  
    

    修正後の挿入操作はプログラムの挿入効率を向上させることができる.ここで2番目のSQLの実行効率が高い主な原因は2つあります.1つはSQL文の解析を減らす操作で、1回の解析だけでデータの挿入操作を行うことができます.2つはSQL文が短く、ネットワーク伝送のIOを減らすことができます.
  • は、トランザクションにおいて挿入処理を行う.挿入を
  • に変更
    START TRANSACTION;  
    INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);  
    INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);  
    ...  
    COMMIT;  
    

    トランザクションを使用すると、INSERT操作を行うとMySQL内部にトランザクションが作成され、トランザクション内で実際の挿入処理が行われるため、データの挿入効率が向上します.トランザクションを使用すると、データベースが文を挿入するときに「トランザクションの作成、トランザクションの発行」を複数回実行するのを減らすことができ、すべての挿入は実行後にコミットされます.
    原文住所:http://blog.csdn.net/tigernorth/article/details/8094277