以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  后台更新同一个查询条件的多个字段,能优化吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189227)

--  作者:guosheng
--  发布时间:2023/11/17 16:41:00
--  后台更新同一个查询条件的多个字段,能优化吗?
下面的代码,更新数据几百号就要几分钟。
DataTables("租赁项目结转明细表").SQLReplaceFor("实际结转日期", dr("实际结转日期"), "条件1")
DataTables("租赁项目结转明细表").SQLReplaceFor("实际结转日期1", dr("实际结转日期1"), "条件1")
DataTables("租赁项目结转明细表").SQLReplaceFor("结转提交人", "张婷婷", "条件1")
DataTables("租赁项目结转明细表").SQLReplaceFor("结转提交日期", Date.Today, "条件1")
DataTables("租赁项目结转明细表").SQLReplaceFor("应结转而未结转的年份", "", "条件1")

--  作者:linyunu
--  发布时间:2023/11/17 16:54:00
--  
改用SQLCommand
--  作者:有点蓝
--  发布时间:2023/11/17 17:05:00
--  
SQLReplaceFor只能一个个来,使用sql吧:http://www.foxtable.com/webhelp/topics/3266.htm
--  作者:guosheng
--  发布时间:2023/11/17 17:06:00
--  
改成下面这样子,800条数,跟sqlselect相比执行时间好像差不太多啊
cmd.CommandText = "U PDA TE {租赁项目结转明细表} SET 实际结转日期 = \'" & dr("实际结转日期") & "\', 实际结转日期1= \'" & dr("实际结转日期1") & "\',结转提交人=  \'张婷婷\', 结转提交日期=  \'" & Date.Today & "\',应结转而未结转的年份 =\'\'  WHERE  条件1 \' 
--  作者:有点蓝
--  发布时间:2023/11/17 17:24:00
--  
肯定快得多的。

另外建议使用参数化的用法。检查使用的条件列可以加上索引

--  作者:guosheng
--  发布时间:2023/11/17 17:27:00
--  
加上索引 什么意思啊,是指的Identify吗  加上会效率提高吗
[此贴子已经被作者于2023/11/17 17:27:35编辑过]

--  作者:有点蓝
--  发布时间:2023/11/17 17:34:00
--  
https://www.baidu.com/baidu?ie=UTF-8&word=%E4%BB%80%E4%B9%88%E6%98%AF%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B4%A2%E5%BC%95


http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=158943

如果使用的外部表,设置索引可以有效提高sql查询的速度。内部表就不用管这个了