MySQL でインデックスの有効活用を判断する方法
MySQLはEXPLAIN文を用いてインデックスが効果的に活用されているかを確認できます。SQL文の実行前にEXPLAINキーワードを追加すると、そのSQL文の実行計画を取得できます。これには使用されているインデックス、テーブルの読み取り順序などの情報が含まれます。例として、次のようなSQL文がある場合:“`EXPLAIN SELECT * FROM table_name WHERE column_name = ‘value’;“`上記の文を実行すると、MySQLはクエリ実行計画の結果セットを返します。そこにはインデックスに関する重要な情報がいくつか含まれています。- type列はクエリが使用するインデックスのタイプを表し、一般的な値には「ALL」、「index」、「range」などがあります。このうち、「index」はインデックスが使用されていることを示します。- key列は実際に使用されるインデックスの名前を表します。- rows列はクエリが返す行数を表します。この値が大きい場合はインデックスの効果が低く、この値が小さい場合はインデックスの効果が良いことを示します。type列とkey列の値を観察することで、インデックスが有効に使用されているかどうかを判断できます。typeが「index」で、key列がNULLではなく、同時にrowsの値が比較的小さい場合は、インデックスが有効に使用されています。逆に、typeが「ALL」の場合はインデックスが使用されていないことが示され、typeが「range」の場合はインデックスの一部だけが使用されていることが示されます。EXPLAIN文はクエリ実行計画のみを提供し、実際のクエリは実行されないので注意してください。そのため、データベースの状態に影響を与えることなく、クエリ文のパフォーマンスを分析できます。また、SHOW INDEX文を使用してテーブルのインデックス情報を表示し、テーブルが使用できる適切なインデックスがあるかどうかを確認できます。