MySQLで3つのカラムにインデックスを作成する方法
MySQLで3つのカラムにインデックスを作成する方法
MySQLで複数のカラム(この例では3列)に対してインデックスを作成するには、テーブル作成時に KEY() を使用します。このように複数カラムをまとめて定義したインデックスは「複合インデックス(コンポジットインデックス)」と呼ばれ、複数の条件を組み合わせた検索を高速化できるのが特徴です。
まず、複合インデックスを持つテーブルを作成してみましょう。
mysql> create table DemoTable1437
-> (
-> StudentId int,
-> StudentName varchar(20),
-> StudentMarks int,
-> StudentAge int,
-> KEY(StudentId,StudentMarks,StudentAge)
-> );
Query OK, 0 rows affected (0.97 sec)
次に、DESCコマンドでテーブル構造を確認し、インデックスが正しく作成されているかチェックします。
mysql> desc DemoTable1437;
実行結果は以下の通りです。「Key」列に MUL と表示されている点に注目してください。これは StudentId が複合インデックスの一部として登録されていることを示しています。
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| StudentId | int(11) | YES | MUL | NULL | |
| StudentName | varchar(20) | YES | | NULL | |
| StudentMarks | int(11) | YES | | NULL | |
| StudentAge | int(11) | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
続いて、INSERT文を使ってテーブルにいくつかレコードを挿入します。
mysql> insert into DemoTable1437 values(101,'Chris',78,21);
Query OK, 1 row affected (0.44 sec)
mysql> insert into DemoTable1437 values(102,'David',89,22);
Query OK, 1 row affected (0.25 sec)
SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select * from DemoTable1437;
実行結果は以下の通りです。
+-----------+-------------+--------------+------------+
| StudentId | StudentName | StudentMarks | StudentAge |
+-----------+-------------+--------------+------------+
| 101 | Chris | 78 | 21 |
| 102 | David | 89 | 22 |
+-----------+-------------+--------------+------------+
2 rows in set (0.00 sec)
複合インデックス利用時のポイント
複合インデックスを効果的に活用するためには、以下の点を押さえておきましょう。
- 最左接頭辞(Leftmost Prefix)の原則: 複合インデックスは、定義した左端のカラム(この例では StudentId)から順に評価されます。
- 有効な検索パターン: WHERE句で StudentId のみ、または StudentId + StudentMarks のように左側から連続したカラムを指定した場合に、インデックスが最大限活用されます。
- 順序の重要性: StudentMarks や StudentAge 単独での検索には、このインデックスは基本的に機能しないため、よく使う検索条件を左側に配置して設計することが重要です。
-
MySQLでビュー(VIEW)を作成する方法|CREATE VIEWの基本構文と実行例を解説
MySQLのビュー(VIEW)とは?ビュー(VIEW)とは、SQLクエリの結果セットをもとに定義される「仮想テーブル」のことです。実際のデータを物理的に保存するわけではなく、元のテーブルへの参照情報のみを保持します。そのため、複雑なクエリをシンプルな名前で呼び出せるようにしたり、ユーザーに見せたい列や行だけを限定して提供したりする際に非常に便利です。MySQLでビューを作成するには、CREATE VIEW文を使用します。ビュー作成の基本構文ビューを作成するための基本構文は以下の通りです。create view yourViewName as select * from yourTableNam
-
MySQLの複合インデックス(コンポジットインデックス)とは?特徴と作成方法を解説
複合インデックス(コンポジットインデックス)とは、複数のカラムに対して設定されるインデックスのことです。マルチカラムインデックスとも呼ばれます。単一カラムのインデックスでは対応しきれない検索条件を効率化できるため、実務でも頻繁に活用される重要な機能です。 複合インデックスの主な特徴 複合インデックスには、以下のような特徴があります。 MySQLでは、最大16個のカラムで構成される複合インデックスを作成できます。 クエリオプティマイザは、インデックスに含まれるすべてのカラムが検索条件で使われるクエリに対して、複合インデックスを利用します。 さらに、先頭の1カラムだけ、先頭の2カラムなど、部分的