MySQL-十万条数据mysql每次判断是否存在记录再插入与将这些数据每条都存入数组中在内存中完成操作的时间却比mysql这种耗时长,为什么?

发布于 2016-11-20 06:35:50 字数 277 浏览 1076 评论 2

测试10万条数据,使用myisam表。
表字段---1.id(主键)2.flag,3.sys,4,time,5,num
其中flag,sys,time建立联合索引
1)mysql每次执行根据flag,sys,time判断数据是否存在,存在则更新num,不存在则入库
2)程序做法,将数据存入数组,每次判断flag,sys,time这三个值是否同时在数组中在的话就更新num,不在的话则插入数组中,数组是个二维数组。

经测试,发现第二种做法比较耗时间,这是为什么呢,谁能从原理上解释下。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-09-16 00:36:22

我想和hash有关吧。
你将2)的数组换成hashmap试试,key是flag,sys,time,速度会有所变化吧。

索引应该是通过hash来定位记录的,如果你通过遍历大小为10万的数组,来定位,那么速度是不会比hash快的。

想挽留 2017-04-30 06:51:17

很简单,因为php遍历数组的速度比起mysql的索引快速定位慢多了。

如果你能将数组的key改成flag_sys_time,而判断isset($array['flag_sys_time'])也比你现在的二维数组快!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文