批处理的问题
问题描述:
本节2:00之后和9:00之后这段讲解和3-5节讲解PreparedStatememnt高效已经自相矛盾了,
本节讲每次循环需要解析一次sql语句而3-5讲解的是如果使用PreparedStatement相同sql类型的sql语句只需要解析一次就行了,因此个人感觉这里有点问题。
尝试过的解决方式:
前面老师讲过PreparedStatement可以使数据库把这种sql语句保存到内存里,因此,只要是相同类型的sql语句过来MySQL都不需要解析直接执行就可以,这很高效,只是第一次执行的时候耗时而已;而本节2分钟开始和9分钟开始的这段针对于循环的这段讲解我认为是错误的
1、错误在老师讲解每一次循环需要解析一次sql语句,事实上只会解析一次
而快得这6秒钟时间是快在
1、我只需要创建一次对象,因为创建对象也是耗资源的事情,循环中创建里了10W次对象
2、在pstmt.excuteUpdate(),每一次循环都要执行一次写操作,即使不是写在真正的表中但是也是写在事务区中,那也是耗费资源的,这里写了10W次毫无疑问也是费时的
以上是我的个人理解,如有错误希望老师指正
正在回答
同学你好
1、使用PreparedStatement向数据库发送sql语句时,会先解析sql语句,然后MySQL数据库会把编译解析好的sql语句存到内存里,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中;3-5课程的原理也是如此
2、在循环外面该sql只会被解析一次
3、如果是在循环中,PreparedStatement每创建一次都会解析一次sql;是mysql内存中有编译好的sql,但是PreparedStatement并不会知道mysql内存中有,所以向mysql发送数据时还是会再次进行解析的,解析sql语句也是会耗费资源的
祝学习愉快~
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星