这个问题与这个有关。
我有一个具有以下结构的页表:
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 上有一个索引。那么第二个查询应该花那么长时间吗?
编辑#1
解释返回
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 查询。
显示索引返回
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