No.1846 indexをあとでまとめてつけるオプション
fwrite($fp, "LOCK TABLES `c_member_profile` WRITE;\n");
fwrite($fp, "UNLOCK TABLES;\n");
fwrite($fp, "/*!40000 ALTER TABLE `c_member_profile` ENABLE KEYS */;\n");
トップ > メモ一覧 > カテゴリ「INDEX」の絞り込み結果 : 5件
5件中 | 1 〜 5 表示 | 1 |
mysql> explain select * from message where body LIKE '%わーい5%' \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: message type: ALL possible_keys: NULL
key: NULL key_len: NULL ref: NULL rows: 999999 Extra: Using where 1 row in set (0.00 sec)
例えば電話帳データベースを作ったとしまして、姓・名・電話番号の3つのカラムを作り、その中身には1億2千万人分の個人情報が登録されているとし ます。莫大なデータなので 検索しやすいように複合インデックスというものを使いたいと考えます。姓・名 のそれぞれのインデックスを作成します。
mysql> create index 姓名 ON telephone (姓, 名);
これの場合、姓名 で検索する場合や、姓だけで検索している場合には都合がいいのですが、名で検索した場合、インデックスの意味がないです。姓→名の順で検索を絞り込むため のインデックスなので、名からの検索の場合、インデックスは使わずに1億2千万行を順番に検索することになります。なので、もう一つインデックスを作って おきましょう。MySQLは1つのクエリーで1つのテーブルに対し、1つのインデックスしか機能しない ようですので、複合インデックスは重要になりそうです。
mysql> create index 名 ON telephone (名);
SHOW INDEX FROMtbl_name
[FROMdb_name
]
SHOW INDEX
はテーブル インデックス情報を返します。そのフォーマットは、ODBC 内の SQLStatistics
コールのそれと似ています。
SHOW INDEX
は次のフィールドを返します。
Table
テーブル名。
Non_unique
もしインデックスが複製を含む事ができなければ0、もしできるなら1。
Key_name
インデックス名
Seq_in_index
1から始まる、インデックス内のカラム シーケンス番号
Column_name
カラム名
カラムがインデックス内でどのようにソートされるか。MySQL では、これは値 ‘A
’ (昇順)か NULL
(格納されない)を持つ事ができます。
インデックス内の固有値数の見積もりこれは、ANALYZE TABLE
か myisamchk -a を起動させる事で更新されます。Cardinality
は、整数として格納された統計に基づいてカウントされるので、小さいテーブルに対してもその値は必ずしも精密ではありません。濃度が高ければ、その分 MySQL が接合を行う時にインデックスを利用する可能性は高くなります。
Sub_part
もしカラムが部分的にだけインデックスされていた時のインデックスされる文字数、もしカラム全体がインデックスされていた時は NULL
です。
Packed
キーがどのようにパックされるのかを指示します。もしそうでなければ NULL
です。
Null
もしカラムが NULL
を含んでいたら、YES
を含みます。もしそうでなければ、カラムは NO
を含みます。
Index_type
使用されるインデックス方法(BTREE
、FULLTEXT
、HASH
、RTREE
)
Comment
様々な意見
db_name
.tbl_name
を
構文の代替として利用する事ができます。これらの2つのステートメントは同等です。tbl_name
FROM db_name
SHOW INDEX FROM mytable FROM mydb; SHOW INDEX FROM mydb.mytable;
SHOW KEYS
は
SHOW INDEX
の同義語です。テーブルのインデックスを mysqlshow db_name
tbl_name
コマンドを利用してリストにする事もできます。
5件中 | 1 〜 5 表示 | 1 |