一些可能有用的信息: 我有一个MySQL数据库,其中包含有关学生的联系方式(名字,姓氏,电子邮件等)。
我偶尔会收到一个csv文件,其中包含更新的联系方式。
由于某些政策,不太可能更改的唯一信息是电子邮件地址,因此MySQL和csv文件将具有共同的电子邮件地址(除非我们有新条目)。
我需要什么: 我需要做的是找到一种方法来检查MySQL数据库(200000条记录)中是否存在来自csv文件(5000条记录)的电子邮件地址。
我编写了一个小python程序,但这需要很长时间,因为它必须为每个电子邮件地址执行sql查询(这意味着在200000条记录的表中有5000个查询)。有时由于执行时间长而导致连接丢失..
实际问题:
我应该如何查询数据库以避免长时间并提高性能?
由于
答案 0 :(得分:0)
我建议:
答案 1 :(得分:0)
您可以使用以下步骤和sql
e.g。
table1:@dweeves建议的csv数据表。
table2:你的mysql表
匹配
SELECT table1.email FROM table1 INNER JOIN table2 ON table1.email = table2.email
不匹配:
SELECT table1.email FROM table1 LEFT JOIN table2 ON table1.email = table2.email
WHERE table2.email IS NULL
答案 2 :(得分:0)
您可以将所有csv数据读入列表并打开mysql阅读器。 将列表与mysql中的数据进行比较。
或者如果您不想将其存储在列表中, 逐行读取它,在读取文件时将其与mysql进行比较。