複合インデックスと複数インデックス
ウノウラボの id: komagata さんの記事が
何となく気になったので書いてみる。
別に間違っててもクビになるわけじゃないし。
MySQLユーザー的には常識なのかもしれませんがMySQL 5.0からはインデックス結合という機能があるそうです。1テーブル1インデックス問題(勝手にそう呼んでいる)が解決するかもしれないと思って調べてみました。
ウノウラボ Unoh Labs: MySQL5からのインデックス結合で1テーブル複数インデックスを使う
はい、知りませんでした。複数インデックス。
CREATE TABLE `employees` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(32) default NULL,
`age` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `index_name` (`name`),
KEY `index_age` (`age`)
)
でも、上の構造で、name, age を元に抽出するつもりだとすると、
自分の感覚では複合インデックス付ける。
CREATE TABLE `employees` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(32) default NULL,
`age` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `index_name_age` (`name`, `age`)
)
で、1テーブル1インデックスなので、
どのクエリも取りこぼさないような組み合わせの
複合インデックスを複数作ってた。
別にこれでもいんじゃないかと思うんだけど、
複数インデックス使ったらクエリに応じた
複合インデックス作りまくる手間が省けるって事かな。
何も考えずに、インデックスかけたいフィールドに
インデックスつけりゃいいのかな。
結論として、DBに関しては耳を塞いでる自分がいる。
じゃなくて、とにかく MySQL5 を使えってことだと思った。
トラックバック(0)
このブログ記事を参照しているブログ一覧: 複合インデックスと複数インデックス
このブログ記事に対するトラックバックURL: http://pm.11op.net/mt/mt-tb.cgi/48
コメントする