2011-07-04 3 views
1

異なるインデックス名が使用されている場合、Mysqlは同じ列のインデックスの作成を禁止しません。内部的には1つのインデックスしか作成されずに更新されていると思いますが、これが真である場合はここで尋ねるのがよいでしょう。mysqlは2つの等しいインデックスでどのように動作しますか?

私の提案が正しくない場合、インデックスを複数回維持する理由は何ですか?

答えて

1

を参照してくださいを削除するにはSPに

I_S_REDUNDANT_INDEXES: lists all redundant indexes 

を使用してそれらを見つけることができ、 1つはfield-1であり、化合物1は(field-1, field-2)である。 2番目のインデックスは最初のインデックスを不要にしますが、私はMySQLが両方のインデックスを維持するよりも何もしないと疑う。

索引が重複しているか重複しているため、削除する必要があるのは開発者またはDBAの仕事です。

私は、そのような重複が最初に出現したのは、過去にいくつかのクエリを最適化するためにインデックスを使ってテストし、完了したときにそれらを削除するのを忘れたからです。

2
  • はい、2つのインデックスのうちの1つだけが実際に内部的に維持されることを期待しています。しかし、それは重要ではありません。なぜなら、これをしてはならないからです。

  • 2つの重複インデックスを維持する理由はありません。

+0

これは私が開発者ではない別のプロジェクトのスキーマで見つかりました。質問では、私はプログラマがインデックスを管理していないmysqlを意味します。 – giftnuss

+0

@giftnuss:はい、私は「維持する」と同じ意味を使用しました。私はあなたがなぜ愚かで目的がないので(なぜなら、最終的には無害なので)、彼がなぜこれをしたのかを開発者に尋ねるべきだと思います。 –

3

@Tomalakが指摘しているように、インデックスは1つだけ維持する必要があります。このリンクをチェックしてください一度

How do MySQL indexes work?

http://www.mysqlperformanceblog.com/2006/08/17/duplicate-indexes-and-redundant-indexes/

ADD:

列にredundentインデックスを持つ場合があるかもしれません。あなたは彼らに

I_S_REDUNDANT_INDEXES_DROP 

テーブルが2つのインデックスを持っている場合もあり、このリンクに

http://malcook-gedanken.blogspot.com/2008_10_01_archive.html

+0

"SP"とは何ですか?これらのコマンドはどこで使われますか? –

+0

SP =ストアドプロシージャ。それらは、冗長なインデックスを見つけて一覧表示し、必要に応じて削除するストアドプロシージャです。データベースに対して雇用される。このリンクをhttp://malcook-gedanken.blogspot.com/2008_10_01_archiveにチェックしてください。html – Rahul

+0

これは、「コミュニティのフィードバックセクション」で検索し、データベースに作成する必要があるストアドプロシージャです。これはあなたの答えに言及する価値があるかもしれません...? –

2

MySQLでは、冗長なインデックスを作成し、それらをすべて維持することができます。

試してみてください。mk-duplicate-key-checkerは、重複した/重複したインデックスを検出する優れたツールです。出力には重複を削除するALTER TABLEステートメントがあり、SQLスクリプトとして実行できます。しかし、実行前に出力を確認することをお勧めします。

関連する問題