SQLの最適化 - 挿入データの最適化(ロード命令の使用)

  • データ挿入時の最適化
  • 主キーの最適化
  • 最適化による順序付け
  • 最適化によるグループ化
  • 制限の最適化
  • カウントの最適化
  • アップデートの最適化

1. データ挿入時の最適化

データをバッチで挿入する場合は、多くても 1,000 を超えないようにするのが最善ですが、一度に数万のデータをバッチで挿入する場合は、複数の挿入ステートメントに分割して挿入できます。

MySQL のトランザクション送信メソッドは、デフォルトで自動的に送信されます。挿入ステートメントが実行された後、トランザクションが送信され、再度挿入が実行されます。トランザクションは実行前に開始され、トランザクションは実行後に自動的に送信されます。これには、トランザクションのオープンと送信が頻繁に行われるため、トランザクションを手動で制御することをお勧めします。Insert ステートメントを実行する前にトランザクションを開始し、複数の Insert ステートメントを実行した後はトランザクションを均一にサブミットします。

主キーの順序で挿入されます。

ここに画像の説明を挿入

1.1 データを一括挿入する

大きなバッチでデータを挿入するには、insert コマンドの代わりにload コマンドを使用することをお勧めします。
ここに画像の説明を挿入
mysql ビューのパラメータの構文形式は次のとおりです。

select @@local--infile;

ここに画像の説明を挿入
local_infile スイッチをオンにすると、load コマンドを通じてデータをロードできるようになります。

set global local_infile = 1;

ここに画像の説明を挿入
データ ファイルをアップロードし、load コマンドを使用して mysql データベース テーブルにロードします。

load data local infile '/root/load_user_100w_sort.sql' into table tb_user fields terminated by ',' lines terminated by '\n';

ここに画像の説明を挿入
100w のデータを mysql にロードするには約 17 秒かかります。データのロードに insert ステートメントを使用すると、約 10 分かかります。このデータロードの効率は依然として非常に明白です。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44860226/article/details/131861472