2008年 9月 25

インデックスには、複数の列に対してまとめて設定する複合インデックスという種類がある。
検索条件に複数列を指定する場合などでは、単一カラムのインデックスよりも複合インデックスの方が高速な検索を行うことが出来る。

複合インデックスを作成するには、CREATE INDEXを使用。下記では、テーブル名tbl_nameのcol1、col2カラムに、col1and2という複合インデックスを作成する。


CREATE index_name ON tbl_name (col1, col2)


作成した複合インデックスを利用するのに特別な構文はなく、下記のようなSELECT文で複合インデックスが自動的に使われる。

SELECT * FROM tbl_name
WHERE col1=1 AND col2=1;

複合インデックスにはいくつかの利用制限があり、最初に指定したカラムを検索対象にする場合は有効となりますが、最初に指定したカラムを検索条件に含まなかったり、順番が違っていたりする場合などは無効になる。また、カラムとカラムをORで検索する場合は複合インデックスが無効になる。

追記:

最初に指定したカラムを検索対象にする場合は有効となりますが、最初に指定したカラムを検索条件に含まなかったり、順番が違っていたりする場合などは無効になる。

どうも5.0以降のバージョンでは動作が違う気がする。

最初に指定したカラムでなくてもインデックスが使われるような。。。

下記のSELECT文では、最初と2番目のクエリがインデックスを使用できる。

# 複合インデックスが有効
... WHERE col1=1;
... WHERE col1 AND col2=1;
... WHERE col1 AND (col2=1 OR col2=2);


# 複合インデックスが無効
... WHERE col1=1 OR col2=1;
... WHERE col2=1 AND col1=1;
... WHERE col2=1;
... WHERE col2=1 AND col3=1;

col2だけの検索もインデックスを利用したい場合は、col2のインデックスを別に作成する事。


参考になるURL:
http://www.res-system.com/weblog/item/550

More from my site

  • MySQLにおける文字化け対策MySQLにおける文字化け対策 MySQL 4.1以降での文字化け対策についてのメモ デフォルトの文字コードが日本語にはなっていない。インストールしたままだと、こんな状態になっている。 mysql> SHOW VARIABLES LIKE 'char%';+--------------------------+----------------------------+| […]
  • DBIでMysql を使う時の文字コード指定DBIでMysql を使う時の文字コード指定 接続時 my $dbh = DBI->connect('DBI:mysql:database=sandbox;host=localhost;mysql_read_default_file=/etc/mysql/my.cnf',qw/id password/,); または接続後に $dbh->{ mysql_enable_utf8 } = […]
  • CentOS 5.3 へPHP5.30をyumでインストールCentOS 5.3 へPHP5.30をyumでインストール phpmyadmin3.2xxでphp5.2以上が必要なのでインストール。CentOS5.3のデフォルトだとphp5.16がインストールされる。 こちらの手順にてhttp://centoshome.seesaa.net/article/117329591.html 確認 # php -vPHP 5.3.0 (cli) (built: Jul 19 2009 […]
  • ただ単にダミー画像をperlで表示するだけのルーチンただ単にダミー画像をperlで表示するだけのルーチン CGIでダミー画像(GIF)を表示するだけのスクリプト。画像データ必要なし。 my @dummy = […]
  • OpenPNEのパッチファイルをあてる方法OpenPNEのパッチファイルをあてる方法 OpenPNEのパッチファイルをあてる方法で分かりやすかった記事 文生のメモ帳EXTRAhttp://memo.fumio.net/2007/04/openpne.html
  • Postfixでのバーチャルドメインの設定Postfixでのバーチャルドメインの設定 バーチャルドメインをPostfixで使う場合 /etc/postfix/virtual の編集が必要となる 参考文献http://vine-linux.ddo.jp/linux/mail/virtual.php

Filed under: MySQL

Trackback Uri



コメントする