4

そのため、MySQL のインデックスに関する文献を確認しましたが、次の点でまだ混乱しています。計算時間に関して、インデックスが MySQL クエリを遅くする可能性があることが説明されました。これは、 say と呼ばれる、上記のインデックスを持つテーブルで操作されるクエリに基づいていると説明されましたindex_A。ある時点で、MySQL がインデックス ファイルを書き換えなければならないことを理解しています。INDEX_A関連するテーブルで発生する UPDATE、INSERT、または DELETE クエリの結果として。私が理解していないのは、これがどのように起こるかです。UPDATE、INSERT、または DELETE のたびに発生する必要がありますか? (これは事実ではないようです。)または、書き換えが発行される前に、特定の数の操作を実行する必要がありますか?(その場合、どのように数を知ることができますか?) または、これはそのテーブルに使用されているエンジンにも依存しますか? 基本的に、本番環境でそれを回避できるように、インデックスがクエリを遅くする原因をよりよく理解したいと思っています。不明な点がありましたらお知らせください。お時間をいただきありがとうございます。

編集: 答えは、Rtree と Btree をよりよく理解することにあるようです。これらは、MySQL のさまざまなエンジンでインデックスを管理するために使用される構造です。私はこれらをさらに見直し、できれば私の調査結果に関する明確な回答をすぐに投稿します.

4

2 に答える 2

1

はい、各クエリの後に実行されます。したがって、MyIsamの一括挿入の場合、キーを無効にしてすべての挿入を実行してから、キーを有効に戻すことができます。詳細については、お読みください。(これはとにかくinnodbでは利用できません)

于 2013-03-20T16:57:06.753 に答える
1

「インデックスを更新する」とはどういう意味かについて混乱しているように感じます。大きなテーブルがあり、いくつかの単純化されたメトリックを提供していると言って詳しく説明しましょう。

  • テーブルに 100 万行をINSERT追加 (または更新または ...) すると、100 万単位の労力がかかります。

  • もう 1 行進むINSERTと、1 単位の労力しかかかりません。

「インデックスを再構築する」にはさらに 100 万単位の作業が必要ですが、これは、明示的にインデックスを作成した場合、場合によっては 、および他のいくつかのあいまいなアクションを実行した場合にのみ発生DROPreCREATEますALTER TABLE

于 2015-11-26T07:52:17.493 に答える