MySQL-十万条数据mysql每次判断是否存在记录再插入与将这些数据每条都存入数组中在内存中完成操作的时间却比mysql这种耗时长,为什么?
测试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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想和hash有关吧。
你将2)的数组换成hashmap试试,key是flag,sys,time,速度会有所变化吧。
索引应该是通过hash来定位记录的,如果你通过遍历大小为10万的数组,来定位,那么速度是不会比hash快的。
很简单,因为php遍历数组的速度比起mysql的索引快速定位慢多了。
如果你能将数组的key改成flag_sys_time,而判断isset($array['flag_sys_time'])也比你现在的二维数组快!