2016-04-04 5 views
-1

Indexesでテーブルに挿入するのが遅いと言われました。インデックスを削除したり、インデックスなしでTabelに作成/挿入したりしてから、インデックスを後で再作成して、単に挿入のインデックスを無視して後で再インデックスするようにmysqlに指示する方法はありますか?インデックスをシャットダウンするか、MySqlで削除/置換するか?

+0

インデックス付きのテーブルに挿入すると、*が遅くなる可能性があります*。多くのインデックス、インデックスの種類、I/OとCPUのパフォーマンス、およびデータの量によって異なります。あなたのケースで重要かどうかを最初に確認する。 – Schwern

+0

重度の索引付け表への挿入が遅い理由を理解していますか?あなたはこの考えがより速くなると思いますか?もっと重要なのは、クエリのパフォーマンスを測定して*具体的に*それらを遅くすることを決定しましたか?データベース全体を再設計するのではなく、ある漠然とした概念が他の漠然とした概念より遅いかもしれないとあなたから伝えられていたからです。あなたのパフォーマンスを測定し、解決すべき問題を特定します。 – David

+0

@David私は実際にテーブルの非索引バージョンと非索引バージョンの挿入をテストしましたが、かなり高速でした。このプロセスを頻繁に再実行する必要があるので、私が投稿したものを正確に把握しようとしています。インデックスを挿入したり、再作成したり、MySqlに挿入時のインデックスを無視するように伝える方法がありますか? – user3649739

答えて

0

短い答え:

インデックスINSERTs中に少しのみの原価計算しながら、通常SELECTsためたくさん価値があります。それらをオフにしないでください。

長い答え:

  • あなたが与えられたアドバイスは唯一のいくつかのあいまいな場合に適用されます。

  • 最初に非常に大きなテーブルをロードし、それが は(InnoDBテーブルの場合には、PRIMARY KEY除いて)は、インデックスを持たないローディングしながら、次に一度にすべてのインデックスを追加するために、時々良好です。

  • テーブルが移入されると、インデックスを回転させると(行を追加するために)、ほとんどは決してになりません。

  • 「フラグ」(真/偽、M/F、はい/いいえ/多分)列のインデックスはほとんど使用されません。 DROPです。

  • 「すべての列をインデックス化」している場合は、4文字の選択肢があります。ほとんどのインデックスは決して使用されません。

  • 「コンポジット」インデックス(つまり、複数の列を含むインデックス)を作成したことがない場合は、インデックスが必要なほど良好でない可能性があります。

  • つまり、インデックスが「少数」の方が良いです。

関連する問題