Mysql Query需要超过300秒

时间:2013-06-23 13:44:42

标签: mysql performance

我有两个MYSQL表,A和B.表A有44,902行,表B有109,583行。 我想比较两个表中的两列,并返回表A中找到匹配项的行。我的不成功的查询是:

SELECT pool.domain_name FROM `pool`, `en_dict` WHERE pool.domain_string = en_dict.word 

和另一种变体:

SELECT a.domain_name FROM `pool` as a inner join en_dict as b  on a.domain_string = b.word

两种解决方案都会在300秒内返回任何值。

我该怎么做才能减少找到匹配的时间?

P.S。我尝试在查询结束时添加LIMIT,并设法在245秒内显示10个结果。

编辑:我的表格结构如下:

--
-- Table structure for table `en_dict`
--

CREATE TABLE `en_dict` (
  `word_id` bigint(20) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `word` varchar(35) NOT NULL,
  PRIMARY KEY (`word_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=109584 ;

-- --------------------------------------------------------

--
-- Table structure for table `pool`
--

CREATE TABLE `pool` (
  `domain_id` bigint(20) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `domain_name` varchar(100) NOT NULL,
  `domain_tld` varchar(10) NOT NULL,
  `domain_string` varchar(90) NOT NULL,
  `domain_lenght` int(2) NOT NULL,
  `domain_expiretime` date NOT NULL,
  PRIMARY KEY (`domain_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=44903 ;

1 个答案:

答案 0 :(得分:2)

尝试在表格的相关列上添加索引:

ALTER TABLE `pool` ADD INDEX `domain_string_idx` (`domain_string`);
ALTER TABLE `en_dict` ADD INDEX `word_idx` (`word`);