この質問はこれに関連しています。
次の構造のページテーブルがあります。
CREATE TABLE mydatabase.page (
pageid int(10) unsigned NOT NULL auto_increment,
sourceid int(10) unsigned default NULL,
number int(10) unsigned default NULL,
data mediumtext,
processed int(10) unsigned default NULL,
PRIMARY KEY (pageid),
KEY sourceid (sourceid)
) ENGINE=MyISAM AUTO_INCREMENT=9768 DEFAULT CHARSET=latin1;
データ列には、レコードあたり約 80KB ~ 200KB のサイズのテキストが含まれます。データ列に格納されるデータの合計サイズは約 1.5GB です。
このクエリの実行には0.08秒かかります。
select pageid from page
ただし、このクエリの実行には約130.0秒かかります。
select sourceid from page
ご覧のとおり、page.pageid にプライマリ インデックスがあり、page.sourceid にインデックスがあります。では、2 番目のクエリにはそれほど時間がかかるのでしょうか?
編集#1
EXPLAINが返されました
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE page index sourceid 5 9767 Using index
申し訳ありませんが、プロファイリングが機能しませんでした... MySQL (4.1.22) は SHOW PROFILE クエリを認識しませんでした。
SHOW INDEXが返されました
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
page 0 PRIMARY 1 pageid A 9767 BTREE
page 1 sourceid 1 sourceid A 3255 YES BTREE