long startTime = System.currentTimeMillis()
conn = getConnection()// execute()
long endTime = System.currentTimeMillis()
System.out.println("获取链接的时间:" + (endTime - startTime))
执行的类似;
2.从你的存储过程的逻辑来说,要条件查询,更新某个字段的值,和入库,这三个漏升步骤应该有输入参数的,那么你的这个参数是怎么传入的?
个人觉得你的这个存储过程可以优化成SQL来执行,效率应该会更好:
首先,你把输入参数放入一个临时表;
比如结构是:
_id _field
查询的条件 更新的字段
// 更新_table中存在的记录的_field字段,并且只更新_table与_tmp键值相等的记录
UPDATE _table t SET _field=(SELECT MAX(_field) FROM _tmp WHERE _id=t._id) WHERE EXISTS (SELECT 'X' FROM _tmp WHERE _id=t._id)
// 选择_table与_tmp键值不相等的记录(即_table中不存在的记录)插入_table
INSERT INTO _table (_id,_field) (SELECT _id,_field FROM _tmp t WHERE NOT EXISTS (SELECT 'X' FROM _table WHERE _id=t._id))
这样的话,高巧每次都是两个批量 *** 作,而且不需要输入参数,直接调用就可以戚搜键,唯一需要多做的工作就是做临时表。
1、存储过程是已经编译过的,在执行时效率高2、在程序中的SQL语句,每次都要经过蔽猛数据库服务器的编译、校验、索引选择、缓存选择等等步骤。相对存储过程是慢的
3、当然也有些事情是必须要在程序中处理,例如:字符串的处理,各种情况的判断等,这个不能一概而论,需要冲并散具体场景具体分析,然散氏后选择最优的方法来试用。
某些情况下, 有一定的作用. 不是带悉尘 100% 的陆洞。例如你要执行一套很复杂的 *** 作, 要执行很多个 SQL 语句。
执行一个后, 要看执行结果, 在做判断,执行下一个这样的。
要在网络之间,来回传递 SQL 语句, 与执行结果这种情况。
如果用存储过程,那么会提升一些效率。
网络之间, 只需要传递一次请蠢禅求, 以及获取一次执行结果就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)