MySQL - 匹配两个表包含巨大数据并找到类似的数据

时间:2013-05-19 08:06:38

标签: python mysql sql

我的SQL中有两个表。 表1包含许多数据,但表2包含大量数据。

这是我使用Python实现的代码

import MySQLdb

db = MySQLdb.connect(host = "localhost", user = "root", passwd="", db="fak")
cursor = db.cursor()

#Execute SQL Statement:
cursor.execute("SELECT invention_title FROM auip_wipo_sample WHERE invention_title IN (SELECT invention_title FROM us_pat_2005_to_2012)")

#Get the result set as a tuple:
result = cursor.fetchall()

#Iterate through results and print:
for record in result:
    print record
print "Finish."

#Finish dealing with the database and close it
db.commit()
db.close()

然而,这需要很长时间。我已经运行了Python脚本1小时,但它仍然没有给我任何结果。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

两张桌子上的Invention_title都有索引吗?如果没有,那么创建它:

ALTER TABLE auip_wipo_sample ADD KEY (`invention_title`);
ALTER TABLE us_pat_2005_to_2012 ADD KEY (`invention_title`);

然后将您的查询合并到一个不使用子查询的查询中:

SELECT invention_title FROM auip_wipo_sample 
INNER JOIN us_pat_2005_to_2012 ON auip_wipo_sample.invention_title = us_pat_2005_to_2012.invention_title

让我知道你的结果。