我有一个包含大约 8 亿个条目的电子邮件表,我需要将它与大约 100,000 封电子邮件的列表进行匹配。数据库中的电子邮件条目已编入索引。
最好的查询是什么?我尝试使用我想要匹配的条目创建一个临时表,然后对该表和主表执行 SELECT,但它似乎应该比它更快 - 多个查询似乎变慢了。有什么建议么?
服务器在 CentOS 6.3 上运行 MySQL 5.5.27。
编辑:这里是创建语句:
CREATE TEMPORARY TABLE temptable (Email varchar(50))
CREATE INDEX tempindex ON temptable (Email)
这是我的查询:
SELECT temptable.Email FROM temptable, biglist WHERE temptable.Email = biglist.Email
这是解释结果:
+----+-------------+-----------+-------+---------------+-----------+---------+-----------------------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+-------+---------------+-----------+---------+-----------------------+------+--------------------------+
| 1 | SIMPLE | temptable | index | tempindex | tempindex | 53 | NULL | 21 | Using index |
| 1 | SIMPLE | biglist | ref | idx_Email | idx_Email | 202 | datab.temptable.email | 1 | Using where; Using index |
+----+-------------+-----------+-------+---------------+-----------+---------+-----------------------+------+--------------------------+