レコードを挿入する際、挿入速度に影響を与える主な要素は、インデックス、一意性の検証、一度に挿入されるレコードの数などです。これらの状況に応じて、最適化を個別に実行できます。このセクションでは、レコードの挿入速度を最適化するためのいくつかの方法を紹介します。以下のエディターで見てみましょう
レコードを挿入する際、挿入速度に影響を与える主な要素は、インデックス作成、一意性の検証、一度に挿入されるレコードの数などです。これらの状況に応じて、最適化を個別に実行できます。このセクションでは、レコードの挿入速度を最適化するためのいくつかの方法を紹介します。
1. MyISAM エンジン テーブルの一般的な最適化方法は次のとおりです。
1. インデックスを無効にします。 空ではないテーブルにレコードを挿入すると、MySQLはテーブルのインデックスに基づいて挿入されたレコードにインデックスを付けます。大量のデータを挿入すると、インデックス作成によりレコードの挿入速度が遅くなります。この状況を解決するには、レコードを挿入する前にインデックスを無効にし、データの挿入後にインデックスを有効にします。インデックスを無効にするステートメントは次のとおりです。 ALTER TABLE tb_name DISABLE KEYS; インデックスを再度有効にするステートメントは次のとおりです。 ALTER TABLE table_name ENABLE KEYS; 空のテーブルからのデータのバッチ インポートの場合、MyISAM エンジン テーブルはデータがインデックス付けされた後にインポートされます。
2. 一意性チェックを無効にする: データが挿入されると、MySQL は挿入されたレコードに対して一意性チェックを実行します。この一意性チェックにより、レコードの挿入速度も低下します。この状況によるクエリ速度への影響を軽減するには、レコードを挿入する前に一意性チェックを無効にし、レコードの挿入後に有効にすることができます。一意性チェックを無効にするステートメントは次のとおりです: SET UNIQUE_CHECKS=0; 一意性チェックを有効にするステートメントは次のとおりです:
3. バッチ挿入を使用します。 複数のレコードを挿入するには、1 つの INSERT ステートメントを使用します。 INSERT INTO table_name VALUES(....),(....),(....) などです。
4. データをバッチでインポートする必要がある場合は、LOAD DATA INFILE を使用します。インポートする LOAD DATA INFILE ステートメントは、INSERT ステートメントよりもデータの速度が高速です。
2. InnoDB エンジン テーブルの場合、一般的な最適化方法は次のとおりです。
1. 一意性チェックを無効にします。 MyISAM エンジンと同様に、SET UNIQUE_CHECKS=0; を通じてデータをインポートした後、この値を 1 に設定します。
2. 外部キーのチェックを無効にします。 データを挿入する前に外部キーのクエリを無効にし、データの挿入が完了したら外部キーのチェックを再開します。外部キーのチェックを無効にするステートメントは次のとおりです: SET FOREIGN_KEY_CHECKS=0; 外部キーのチェックを復元するステートメントは次のとおりです: SET FOREIGN_KEY_CHECKS=1;
3. 自動送信を無効にします。 データを挿入する前にトランザクションの自動送信を無効にして、データのインポートが完了したら、自動送信の復元操作を実行します。自動送信を無効にするステートメントは次のとおりです: SET AUTOCOMMIT=0; 自動送信を復元するには、値を 1 に設定するだけです。
以上がmysql がレコードの挿入速度を最適化する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。