mysql数据库大量查询次数如何优化

有一个excel表格里面有十万条数据.有一个mysql数据库表,里面有几万条数据.现在需要以excel表格中的数据为主,去和数据库中的数据对比,如果excel中有的数据而... 有一个excel表格里面有十万条数据.有一个mysql数据库表,里面有几万条数据.现在需要以excel表格中的数据为主,去和数据库中的数据对比,如果excel中有的数据而数据库表中没有,就要将这个数据添加到数据库中.
我现在用的是普通的获取一条excel数据去查数据库,如果不存在就插入进去.但是这样效率好慢,有多少数据就要查询多少次.6万条数据就要三十多分钟.有没有大神给个优化思路呀.
万分感激
展开
 我来答
爱可生云数据库
2020-06-03 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部

MySQL 8.0.16 已经发布,它像往常一样增强了组复制 Group Replication 功能。

这篇文章介绍了 MySQL 8.0.16 为 Group Replication 带来的新功能:

Message fragmentation(信息碎片化)。


背景

Group Replication 目前使用 XCom(一种组通信引擎),特点:原子性,组员状态检测等。每个成员的组复制插件先将信息转发到本地 XCom,再由 XCom 最终以相同的顺序将信息传递给每个组成员的 Group Replication 插件。

XCom 由单线程实现。当一些成员广播信息过大时,XCom 线程必须花费更多的时间来处理那个大信息。如果成员的 XCom 线程忙于处理大信息的时间过长,它可能会去查看其他成员的 XCom 实例。例如,忙碌的成员失效。如果是这样,该组可以从该组中驱逐忙碌的成员。

MySQL 8.0.13 新增  group_replication_member_expel_timeout  系统变量,您可以通过它来调整将成员从组中驱逐的时间。例如,怀疑成员失败,但成员实际上忙于处理大信息,给成员足够的时间来完成处理。在这种情况下,是否为成员增加驱逐超时的设置是一种权衡。有可能等了很久,该成员实际真的失效了。


Message fragmentation(信息碎片化)

MySQL 8.0.16 的 Group Replication 插件新增用来处理大信息的功能:信息碎片化。

简而言之,您可以为成员的广播信息指定最大值。超过最大值的信息将分段为较小的块传播。

您可以使用  group_replication_communication_max_message_size  系统变量指定允许的信息最大值(默认值为10 MiB)。


示例

让我们用一个例子来解释新功能。图1显示了当绿色成员向组广播信息时,新功能是如何处理的。

图1 对传出信息进行分段

1. 如果信息大小超过用户允许的最大值(group_replication_communication_max_message_size),则该成员会将信息分段为不超过最大值的块。

2. 该成员将每个块广播到该组,即将每个块单独转发到XCom。

XCom 最终将这些块提供给组成员。下面三张图展示出了中间绿色成员发送大信息时工作的新特征。

图2a 重新组合传入的信息:第一个片段

3. 成员得出结论,传入的信息实际上是一个更大信息的片段。

4. 成员缓冲传入的片段,因为他们认为片段是仍然不完整的信息的一部分。(片段包含必要的元数据以达到这个结论。)

图2b 重新组合传入的信息:第二个片段

5. 见上面的第3步。

6. 见上面的第4步。

图2c 重新组合传入的信息:最后一个片段

7. 成员得出结论,传入的信息实际上是一个更大信息的片段。

8. 成员得出结论,传入的片段是最后一个缺失的块,重新组合原始信息,然后对其进行处理,传输完毕。


结论

MySQL 8.0.16 已经发布后,组复制现在可以确保组内交换的信息大小不超过用户定义的阈值。这可以防止组内误判而驱逐成员。

XZGF2011
2019-11-08 · TA获得超过627个赞
知道小有建树答主
回答量:906
采纳率:33%
帮助的人:163万
展开全部
先把excel的数据导入到一个临时新建的表,然后从这个新表插入到原表。
insert into orig_table select * from new_table where not exists ( select 1 from
orig_table where column=new_table.column ... )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张伊笙
2018-08-27 · TA获得超过527个赞
知道小有建树答主
回答量:962
采纳率:85%
帮助的人:447万
展开全部
你是如何用excel的数据去对比mysql中表的数据的?是将excel导入到mysql中吗?
追问
不是 是使用poi去读取的excel文件
追答
其实你10几万条数据不算大的,是不是你的表中没有索引?

我觉得可以将excel中的数据先导入到mysql中,然后用replace into插入就好了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式