InnoDB インデックスの無効化
パフォーマンスの最適化のために InnoDB テーブルのインデックスを無効にしようとすると、エンジンの制限によりエラーが発生することがよくあります。この問題に対処するには、次の代替案を検討してください。
代替アプローチ:
-
外部キー制約を一時的に無効にする: SET external_key_checks= を使用する0; InnoDB が外部キー関係を強制するのを防ぎ、一括挿入中のインデックス チェックに関連するオーバーヘッドを削減します。
-
自動コミットを無効にする: SET autocommit=0; を実行します。取引のコミットメントを遅らせるため。これにより、複数の変更をグループ化して一緒にコミットできるようになり、インデックス更新の頻度が減ります。
-
一意のチェックを無効にする: SET unique_checks=0; を実行します。一意のキー制約を一時的に無視します。これにより、挿入時に一意のインデックス チェックが不要になり、パフォーマンスが向上します。
最適化のヒント:
-
テーブルのパーティション化: テーブルをより小さなパーティションに分割すると、データの整合性を犠牲にすることなく、より効率的なインデックスの使用が可能になります。
-
一括挿入テクニックを使用する: INSERT ... INTO VALUES( などの一括挿入メソッドを使用します。 ...)、個々の行の挿入と比較して、データの挿入を大幅に高速化できます。
-
インデックス構造の最適化: 特定のデータ構造とクエリ パターンに対する効率的な検索操作を容易にするようにインデックスが設計されていることを確認します。 。必要に応じて、部分インデックスまたは複合キーを検討してください。
-
InnoDB 以外のストレージ エンジンを検討してください: 大量のデータ読み込みに大きく依存するアプリケーションの場合は、高速な MyISAM や MEMORY などのストレージ エンジンの使用を検討してください。インデックス チェックのオーバーヘッドなしで挿入のパフォーマンスを向上させます。
データの整合性とデータベースの機能を確保するために、一括挿入操作が完了した後は、必ず一時設定を元に戻して制約を有効にしてください。
以上が## パフォーマンスのために InnoDB テーブルの挿入を最適化する方法: 本当にインデックスを無効にすることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。