A と B の 2 つの MYSQL テーブルがあります。テーブル A には 44,902 行、テーブル B には 109,583 行があります。2 つのテーブルの 2 つの列を比較し、一致するテーブル 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 秒未満の値を返すことに失敗しました。
一致を見つける時間を短縮するにはどうすればよいですか??
PS クエリの最後に 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 ;