3-6.インデックスについて 3-6.関数と併用される

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;
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;
mysql> select ID_C,NAME_C,AGE_C from
-> FRIENDS_T2 where ID_C > 5
-> having NAME_C like “友%”;
• グルーピング:group by
指定のカラムにある全データから重複する
ものをまとめて表示させる。
mysql> select BLOOD_C from
-> FRIENDS_T2 group by BLOOD_C;
上記のコマンドはselect distinctと同じ結果
セットを得ることになる。
select distinctとの違いは、1つのカラムの
グループ化を行った後、他のカラムのデー
タも表示できる。
mysql> select * from FRIENDS_T2
-> group by BLOOD_C;