2011-08-05 9 views
0

mysqlに関するいくつかの質問があります。 xamppパッケージの一部としてphpmyadminを使用しています。PHPMyAdminのインデックスとキーの問題

ので:

  1. 私は、インデックスとしてマークされてマークされていた私のテーブルのフィールドを定義しました。しばらくして、フィールドの名前を変更しましたが、キー名の下にある名前が古い名前のまま残っていることに気付きました。何故ですか?それは問題を課しますか?

  2. テーブルに複数のインデックスを定義すると、何らかの形で1つのキーの下に集まりますが、フィールドだけが他のキーの上に表示されることに気付きました。

私はすでにデータベースを構築していますが、変更を加えた後、間違ったインフラストラクチャを構築したくないです。私は再建すべきですか?

答えて

0

キー名は基本的に参照用であり、実際にインデックスを作成しているフィールドには影響しません。名前を使って作業しているときにキーの参照を簡単にする(追加/変更/削除キー)が、それ以外の場合は純粋に情報です。 MySQLはキー名を指定しないと自動的にキー名を割り当てますが、これは一般にキーの最初のフィールドに基づいています。

インデックスの意味についてよく分かりません。あなたのSQLを表示する必要がありますが、したい:

CREATE TABLE ... 
... 
INDEX indexA (fieldA, fieldB), 
INDEX indexB (fieldC, fieldD), 
INDEX indexC (fieldE) 

は次の2つのフィールドそれぞれをカバーするそのうちの2つは3つのインデックスを作成します。 ()内で指定されたフィールド名は、その1つのインデックスの一部になります。

+0

2つのフィールドの1つのインデックスの意味は? 2つのフィールド値を1つのインデックスに結合するのはそうですか? – Ted

+0

任意のフィールドの任意の組み合わせにインデックスを付けることができます。フィールドのコンボが常にwhere/join句で一緒に使用される場合は、通常、複数フィールドインデックスを作成します。複数の単一フィールドキーよりも複数フィールドインデックスを維持する方が少し安いです。 –

+0

私は分ける必要があると思う。フィールドごとに1つのインデックスに。 phpmyadminはなぜそれらを一緒に表示し続けますか? – Ted

0

私はあなたが再構築するべきではないと思います。あなたの最初の質問の再

: あなたのシーイングはインデックス名が変更されていないが、それはまだあなたがあなたの2番目の質問を再

と改名し、そのフィールドを指すもの: あなたが何を意味するかわからないの下に集まる」によります1つのキー "と言いますが、ここでスクリーンキャプチャを投稿することがまだ懸念されているのであれば、それはmyphp UIのものになる可能性があります。

一般的に、テーブルに多くのインデックスを作成しないようにすると、挿入と削除が遅くなります。 インデックスを削除することは破壊的な操作ではありません。そのため、あなたのユースケースのための最も基本的なスキーマを見つけ出すことができます。 もしあなたがプレミアムロマンスに興味があるなら、正規化と呼ばれるものを調べることもできます

+0

私は現時点では自分のコンペの周りにいませんが、キー名はどのフィールドにも関係しませんが、フィールド名を識別できると言っていますか? – Ted

+0

一部の表では、キー名は単一ですが、2つのフィールドを参照しているようです(2つのフィールドを参照する1つのキー名と各フィールドの1つのキー名との間に違いがなければなりません)。 – Ted

関連する問題