私のプログラムでは、挿入がほとんどなく、頻繁に実行される挿入はすぐには必要ないため、に変更されていINSERT DELAYED
ます。コードを調べて、句で参照されているフィールドを確認しWHERE
、それぞれにインデックスを追加する必要がありますか?もしそうなら、どのタイプのインデックスを使用しますか?速度が低下するのはインサートだけですか?
また、これらのインデックスを任意のデータ型で使用できますか?
私のプログラムでは、挿入がほとんどなく、頻繁に実行される挿入はすぐには必要ないため、に変更されていINSERT DELAYED
ます。コードを調べて、句で参照されているフィールドを確認しWHERE
、それぞれにインデックスを追加する必要がありますか?もしそうなら、どのタイプのインデックスを使用しますか?速度が低下するのはインサートだけですか?
また、これらのインデックスを任意のデータ型で使用できますか?
インデックス作成を検討できる主な場所は2つあります。WHERE句で参照される列とJOIN句で使用される列です。つまり、そのような列には、特定のレコードを検索するために必要なインデックスを付ける必要があります。
このブログはいいです。
WHERE句で使用するフィールドには常にインデックスを追加する必要があります(SELECT、UPDATE、またはDELETEのいずれの場合でも)。インデックスのタイプは、フィールド内のデータのタイプと、各行に一意の値が必要かどうかによって異なります。一般に、デフォルトのインデックスタイプ(ハッシュとBツリー)は、実際に何をしているかを理解していない限り、デフォルト設定のままにしておくのが最適です。
現在、個別のインデックス(フィールドごとに1つ)を使用するか、複合インデックスを使用するかは、アプリケーションの動作に依存し、より高度な主題であるため、一般的に、始めたばかりの場合は、各フィールドのインデックスを使用してください。主キーには自動的にインデックスが付けられるため、それらに別のインデックスを作成する必要はありません。
パフォーマンスの問題が発生する前にクエリを変更しないでください。これは時期尚早の最適化です。代わりに、MySQLクエリログを使用して、どのクエリに時間がかかっているかを確認し、それらのクエリの改善に集中してください。