php foreach 嵌套循环大数组很慢?
就这个循环花了10S,我写的是用php导入excel到mysql数据库,但是要验证code不能重复,原本想用一个foreach循环selecte一个一个的对比,一想到要插...
就这个循环花了10S,
我写的是用php导入excel 到mysql数据库,但是要验证code 不能重复,原本想用一个foreach循环selecte 一个一个的对比,一想到要插入1000条就要seletet 1000次这样写会很慢,结果我就用了上面这个方法 ,先用一条selecte 把数据库的数据全部查出来的到一个数组$gift,然后跟excle上传过来的数据 嵌套循环对比 ,一运行发现很慢 单嵌套循环就花了10s,我又改用第一种方法,结果才花了5S ,还快了一半。我是想问大神们,你们遇到这样的问题都是怎么处理的,有没有更好的方法?我觉得写程序这样事情经常会有 展开
我写的是用php导入excel 到mysql数据库,但是要验证code 不能重复,原本想用一个foreach循环selecte 一个一个的对比,一想到要插入1000条就要seletet 1000次这样写会很慢,结果我就用了上面这个方法 ,先用一条selecte 把数据库的数据全部查出来的到一个数组$gift,然后跟excle上传过来的数据 嵌套循环对比 ,一运行发现很慢 单嵌套循环就花了10s,我又改用第一种方法,结果才花了5S ,还快了一半。我是想问大神们,你们遇到这样的问题都是怎么处理的,有没有更好的方法?我觉得写程序这样事情经常会有 展开
2个回答
展开全部
双层循环啊, 数量是 $gift * $fi的个数。 百万级别的。
简单的就是将excel中的数据导入的数据库中(可以是另外一个表),将验证码字段建索引。然后再排查重复的,纯sql就很快了。
简单的就是将excel中的数据导入的数据库中(可以是另外一个表),将验证码字段建索引。然后再排查重复的,纯sql就很快了。
追问
在本地测是很快几乎可以忽略,但是到服务器就不一样了,我要导入1000条就要sql 1000次,这样总感觉有问题
追答
在数据库中建立索引后就很快了,不会真的执行1000次。
用卡迪尔积是效率最差的。
还有一个慢的原因可能是打开并读取excel慢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询