检查MySQL中是否存在数千条记录

时间:2013-12-09 11:01:00

标签: mysql performance

一些可能有用的信息: 我有一个MySQL数据库,其中包含有关学生的联系方式(名字,姓氏,电子邮件等)。

我偶尔会收到一个csv文件,其中包含更新的联系方式。

由于某些政策,不太可能更改的唯一信息是电子邮件地址,因此MySQL和csv文件将具有共同的电子邮件地址(除非我们有新条目)。

我需要什么: 我需要做的是找到一种方法来检查MySQL数据库(200000条记录)中是否存在来自csv文件(5000条记录)的电子邮件地址。

我编写了一个小python程序,但这需要很长时间,因为它必须为每个电子邮件地址执行sql查询(这意味着在200000条记录的表中有5000个查询)。有时由于执行时间长而导致连接丢失..

实际问题:

我应该如何查询数据库以避免长时间并提高性能?

由于

3 个答案:

答案 0 :(得分:0)

我建议:

  • 在mysql Server上的表中批量加载电子邮件csv(需要文件权限)
  • 在您的电子邮件csv表和&之间执行LEFT JOIN请求用于检查存在或不存在电子邮件的现有数据库。

答案 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进行比较。