平成30/ 2018-10-22 00:45
MYSQL/ INDEX

--------------------------------------------------------------------------------
create table usr_contract(
usr_id     int unsigned not null default '',
filename   varchar(30) primary key default '',
created_at varchar(19) not null default '',
deleted_at varchar(19) not null default '',
index usr_contract_idx01(usr_id)
)engine=innodb default charset=utf8 comment 'ユーザの契約データ'
;

index でなく、key でもいい。
-
key usr_contract_idx01(usr_id)




--------------------------------------------------------------------------------
alter table sample add index sample_idx01 ( name_kana );

alter table sample drop index sample_idx01;

以下の制限があるので、
通常のindex、unique index 共に、767byteを超えないようにする。
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

varchar(10) で、utf8の場合は、
10 * 3 = 30byte

LIKEだとINDEXが効かないと聞いたことあるのだが、
そんなことはない。


|
| TEST型はプレフィックスインデックスという方法でINDEXできる
|----------
alter table sample add index sample_idx01 ( name_kana(100) );

但し、ORDER BY、GROUP BYは効かない。


|
| インデックスは1度に16カラム以上は無理とのこと。
|----------
ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed


|
| インデックスで、日付切り出したければ、日付型でなく、文字型にしないとだめ。
|----------
created_at が、日付型の場合は以下のようなことはできない。
create index id_idx on tbl(created_at(7));

実現させるには、varchar型にする必要がある。


|
| Thanks.
|----------
MYSQL INDEXのまとめ
http://yut.hatenablog.com/entry/20110418/1303083112

MySQL :: カラムの追加、変更、削除、インデックス操作
http://webcache.googleusercontent.com/search?q=cache:LmGoPBnAYsIJ:tm.root-n.com/database:mysql:command:alter+mysql+%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E5%90%8D&cd=12&hl=ja&ct=clnk&gl=jp&source=www.google.co.jp

http://dev.mysql.com/doc/refman/5.1/ja/create-index.html