システム開発ブログ/ 産業システム部 Yahoo!ブックマークに登録 Google ブックマーク はてなブックマーク Livedoorクリップ シェア

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

MySQLのテーブルにインデックスを追加する

小口
小口 (2010年7月22日 10:25)
産業システム部 / MySQL / データベース

今回はMySQLのテーブルにインデックスを追加する方法をご紹介したいと思います。

初めに、現在のテーブルのインデックスの状態を確認します。
インデックスの表示は以下のコマンドで行います。

SHOW INDEX FROM [テーブル名];

例)社員テーブルのカラムを表示する

-------------ここから---------------------------------------------

mysql> SHOW INDEX FROM syain\G
*************************** 1. row ***************************
Table: syain
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: No
Collation: A
Cardinality: 100
Sub_part: NULL
Packed: NULL
Comment:
2 rows in set (0.00 sec)

-------------ここまで---------------------------------------------

上記項目は以下のようになっています。
Table ...テーブル名
Non_unique ...一意性制約があるか。あれば0、なければ1
Key_name ...インデックス名
Seq_in_index...マルチカラムインデックスの列番号
Column_name ...カラム名
Cardinality ...この列に含まれるユニークな値の数
Sub_part ...インデックスになっている文字列
Packed ...キーがどのようにパックされるか
Comment ...コメント

この社員テーブルでは主キーが「No」で
他にインデックスは使用されていないことがわかります。
なお、SQL文の最後に「\G」をつけると
問い合わせ結果を縦一列に表示出来るので見やすくなります。

では、この社員テーブルの社員名に、インデックスを追加します。
インデックスを追加するには以下のコマンドを用います。

ALTER TABLE [テーブル名] ADD INDEX ([カラム名]);

実行して「Query OK,」と表示されれば、定義変更成功です。

例)社員テーブルの社員名にインデックスを追加する

-------------ここから---------------------------------------------

mysql> ALTER TABLE syain ADD INDEX (syainname);
Query OK, 100 rows affected (0.08 sec)
Records: 100 Duplicates: 0 Warnings: 0

-------------ここまで---------------------------------------------

再びテーブルのインデックスの状態を確認すると
「*********2. row*********」以下にsyainnameに
インデックスが適応されたことが表示されます。

-------------ここから---------------------------------------------

mysql> SHOW INDEX FROM syain\G
*************************** 1. row ***************************
Table: syain
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: No
Collation: A
Cardinality: 100
Sub_part: NULL
Packed: NULL
Comment:
*************************** 2. row ***************************
Table: syain
Non_unique: 1
Key_name: INDEX
Seq_in_index: 1
Column_name: syainname
Collation: A
Cardinality: 100
Sub_part: NULL
Packed: NULL
Comment:
2 rows in set (0.00 sec)

-------------ここまで---------------------------------------------

「システム開発ブログ」へのコメントやご意見等ありましたら、 ファンページまでお願いします。  Facebook のファンページ

お問い合せ・情報はこちらの電話番号におかけください:03-3232-2525 お問合せ・資料請求はこちらをクリックしてください
ページのトップ
システム開発・一括受託開発。見積依頼受付中

システム開発専用サイト

システム開発の流れ・手順、実績など。アイロベックスのシステム開発を紹介。

VB .NETを主言語としたWebアプリケーションの開発

要件分析から保守まで、お客様の現場での問題解決だけでなく、IT経営の援護者としてトータルソリューションサービスを提供しています。

MovableType を使ったウェブサイト構築

魅力あるウェブサイトデザイン、構成はもとよりMovableTypeを使用したウェブサイトの作成、JAVA、CGIによる注文フォームの作成等、ビジネスを強力にサポートします。

フォルダーアクセス権限確認ツール『AD-Folder』

Windowsフォルダーアクセス権限確認ツール

フォルダーアクセス権限を一目で確認。使用版を無償でご利用いただけます。

スクール運営を応援する講座情報管理システム『CMS+AD for School』

Webとリアルをつなぐコンテンツマネージメントシステム

Webサイト・モバイルサイト・チラシ(PDF)・カタログ(InDesign)を、簡単かつ正確に作成できます。

「システム開発ブログ」の更新情報をTwitterで。

Twitter公式アカウントに認定されています

「システム開発ブログ」の更新情報をTwitterで。ぜひ、フォローをお願いします。