首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存数据与多个查询

缓存数据与多个查询
EN

Stack Overflow用户
提问于 2016-04-25 15:47:19
回答 2查看 46关注 0票数 0

关于绩效和实施的问题非常广泛和公开:

程序

我已经构建了一个程序,允许用户导入包含用户名和电子邮件地址的excel电子表格。此电子表格可以有多达100,000个独特的记录。

需求

此程序的要求是检查数据库中的副本,以防止将同一用户保存两次。

The Issue

当涉及到检查副本时,我希望遇到的问题是性能--我正在寻找最快/最有效的方法来验证唯一的用户(基于名称和电子邮件地址)。

我的第一个解决方案是在导入时将所有现有成员缓存到一个HashMap中,这样我就可以遍历地图并逐一比较正在上传的记录。这里显而易见的Pro是一个数据库调用--但是,如果我的数据库有100万用户存储,我认为这可能会使我的应用程序崩溃或严重滞后。

第二个解决方案是调用每个记录的数据库,查看用户名/电子邮件是否已经存在。我不确定这是否可取,因为50,000个用户将等于50,000个数据库调用--对我来说听起来不太好。

在上面列出的两个方案中,是否有一个首选的解决方案,或者这个任务的任何方面我在这里没有考虑到?(批处理、数据库查询模式等)。

如有任何意见请见谅,谢谢!

注*我使用的是Server数据库(尽管我希望数据库无关,但我愿意接受任何SQL建议)

EN

回答 2

Stack Overflow用户

发布于 2016-04-25 15:56:03

如果数据库支持这样的特性,则可以使用MERGE语句或INSERT IGNORE,以便所有重复的记录都被静默丢弃,如果记录已经存在,则可以跳过测试。

合并:%28SQL%29

MySQL插入忽略:https://dev.mysql.com/doc/refman/5.5/en/insert.html

票数 1
EN

Stack Overflow用户

发布于 2016-04-25 15:52:24

添加电子邮件和用户名列的唯一约束。如果要更新重复项,请使用数据库支持的UPSERT语法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36845312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档