sql >> データベース >  >> RDS >> Mysql

mysqlはどのようにして数百万のレコードをより速く挿入できますか?

    これは、次のようなレコードを挿入していることが原因である可能性があります:

    INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
    INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
    INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
    INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
    INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
    

    INSERTが必要になるたびに新しいクエリを送信する パフォーマンスに悪いことがあります。代わりに、これらのクエリを次のように1つのクエリに結合します。

    INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2"),
                                                     ("data1", "data2"),
                                                     ("data1", "data2"),
                                                     ("data1", "data2"),
                                                     ("data1", "data2");
    

    挿入速度の詳細については、 MySQLDocs<を参照することもできます。 / a> 。以下を明確に説明しています。

    もちろん、量が膨大な場合は、それらすべてを組み合わせないでください。挿入する必要のある行が1000行あるとします。その後、一度に1行ずつ挿入しないでください。ただし、1つのクエリで1000行すべてを均等に取得しようとすべきではありません。代わりに、小さいサイズに分割してください。

    それでも本当に遅い場合は、サーバーが遅いことが原因である可能性があります。

    もちろん、組み合わせたクエリでこれらすべてのスペースが必要なわけではないことに注意してください。これは、単に回答の概要を把握するためです。




    1. Linuxプラットフォーム用のOracleDatabase21c

    2. PHPおよびMySQLのオプションのWHERE条件

    3. MySQLはちょうど7日前から行を選択します

    4. 排他的論理和またはmysqlでの使用