这个问题与此有关。
我有一个具有以下结构的 页 表:
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上有一个索引。所以,应该在第二个查询服用 THAT 长时间?
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
您是否尝试强制使用索引?喜欢:
SELECT sourceid FROM page USE INDEX (sourceid_index)
像sgehrig注释一样,使用EXPLAIN检查是否使用了索引?并分享结果?
EXPLAIN select sourceid from page
它还可以帮助共享索引的定义:
SHOW INDEX FROM page