かぴぶろぐ

またかぴったかと思った・・・(´A`;)

Mysql Indexについて

カテゴリ[ Mysql ]
indexの目安1,000件以下であればシーケンシャルに検索した方が速い
indexを作成
create index インデックス名 on テーブル名 (フィールド名);
先頭5文字目までをインデックス化したいならば、
create index title_index on bib_tb (title(5));
作成したインデックスを確認する
mysql> show index from bib_tb;[Enter Key]

+--------+------------+-------------+--------------+-------------+
| Table  | Non_unique | Key_name    | Seq_in_index | Column_name |
+--------+------------+-------------+--------------+-------------+
| bib_tb |          0 | PRIMARY     |            1 | id          |
| bib_tb |          1 | title_index |            1 | title       |
+--------+------------+-------------+--------------+-------------+

-----------+-------------+----------+--------+---------+
 Collation | Cardinality | Sub_part | Packed | Comment |
-----------+-------------+----------+--------+---------+
 A         |        6595 |     NULL | NULL   |         |
 A         |        3297 |        5 | NULL   |         |
-----------+-------------+----------+--------+---------+

2 rows in set (0.00 sec)
実際にインデックスが使用されているかどうかを確認する
explain select * from bib_tb where title like ('日本%');
インデックスを削除する
drop index インデックス名 on テーブル名;
order byについてorder byはindexを利用できない。my.cnf設定での改善を考えてみる。
  • sort_buffer_size 変数の値を増やす。
  • read_rnd_buffer_size 変数の値を増やす。
  • tmpdir に空き領域が大量にある専用ディスク上のディレクトリを指定する。
    • MySQL 4.1 以降を使用している場合、tmpdir に対してコロン :(Windows の場合はセミコロン ;)で区切ったパスの一覧を設定することで、複数の物理ディスク間の負荷を分散させることができる。この物理ディスクは、ラウンドロビン方法で使用され る。 注意: これらのパスは、同一ディスクの複数のパーティションではなく、異なる物理ディスクである必要がある。
参考URL

http://kapi.jp/kapi_blog/105

2008年01月15日

関連カテゴリ Mysql

この記事のコメント

この記事にコメントする