2012-02-09 20 views
2

インデックスを使用してMySQLテーブルをスピードアップしようとしています。 PHPmyadminを使ってインデックスを追加すると、2つのカラム、keyname、columnがあります。インデックスを作成するテーブルの列がいくつかあります。MySQLインデックス:1つのキー名複数の列または1列あたり1つのキー名?

問題:列ごとに1つのキー名と、インデックスを付けるすべての列に対して1つのキー名を持つことの違いは何ですか?私は、すべてのインデックス付きカラムに1つのキー名を使用することが最も効果的です。何が起こっている?

複数の列を持つキー名の最初の列は、MySQLクエリに表示される最初の列です。私はこれが1つのキーワードの複数の列を使用することと関係があると思いますが、なぜこれが必要なのか分かりません。

答えて

1

Multi-column indexes(「すべての列の1つのキー名」)は、各列のsingle-column indexesとは異なります。それはすべてあなたの質問に依存します。

複数の列から頻繁にクエリを実行する場合は、その組み合わせをインデックスに追加する必要があります。照会たとえば:

SELECT * FROM users WHERE (age > 18 AND name = "Johnnie Walker") 

を次の2つのカラムにインデックスを追加する必要があります(年齢、名前)

+0

を私は右の各キー名は異なるインデックスを作成し、各データベースクエリのみを使用していると言うことになっています多くのインデックスのうちの1つ、そしてキーネームと同じくらいの数のインデックスがあることを示します。 – Nyxynyx

+0

@Nyxynyx:あなたの最初の前提ではい。あなたの2番目の前提でいいえ。クエリエンジンは、クエリを最適化するのに必要な数のインデックスを自由に使用できます。あなたの3番目の仮定ではい。 – Asaph

+0

@Asaph:ありがとう! PHPmyadminで 'keyname'と呼ばれるインデックスはなぜですか? – Nyxynyx

関連する問題