3-6.インデックスについて 3-7.関数と併用されることの 多いMySQLコマンド 2004年 6月3日(木) 01T6074X 茂木啓悟
3-6.インデックスについて レコードが非常に多くなりデータの検索に時間がかかる場合、カラムにインデックス(索引)をつけることによって検索速度を向上させることができる。
インデックスの作成と確認 1.テーブル作成時に指定する方法 mysql> create table MEMBERS(ID_C int not null -> primary key,NAME_C varchar(20) -> not null,ADDRESS_C varchar(32), -> index ID_INDX(ID_C));
2.既存のテーブルにあるカラムに インデックスを作成する方法 mysql> create index NAME_INDX on -> MEMBERS(NAME_C);
3.作成済みのテーブルに変更を加える方法 mysql> alter table MEMBERS add index -> NAME_INDX(NAME_C); いずれの場合でもインデックス名が指定されていなければ,インデックスのカラム名がそのままインデックス名になる。
mysql> show index from MEMBERS; インデックスの確認 mysql> show index from MEMBERS; Key_nameのカラムにインデックスの 名前が表示される.
インデックスの削除 インデックスを削除する場合には, drop indexコマンドを使う。 mysql> drop index NAME_INDX -> on MEMBERS;
3-7.関数と併用されることの多いMySQLコマンド having句 ある条件で抽出された結果セットに対して、さらに条件を加えて絞り込みを行う場合に用いる。 関数で処理されたあとに結果セットを絞り込むときにwhereは使えないのでhavingが有効。
mysql> select ID_C,NAME_C,AGE_C from -> FRIENDS_T2 where ID_C > 5 -> having AGE_C > 40 order by ID_C; -> having NAME_C like “友%”;
グルーピング:group by 指定のカラムにある全データから重複するものをまとめて表示させる。 mysql> select BLOOD_C from -> FRIENDS_T2 group by BLOOD_C; 上記のコマンドはselect distinctと同じ結果セットを得ることになる。
mysql> select * from FRIENDS_T2 select distinctとの違いは、1つのカラムのグループ化を行った後、他のカラムのデータも表示できる。 mysql> select * from FRIENDS_T2 -> group by BLOOD_C;