以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]deletefor与null的效率问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121295) |
-- 作者:chnfo -- 发布时间:2018/7/3 14:58:00 -- [求助]deletefor与null的效率问题 发现一个问题,使用combine方法合并两个查询表。 合并之后,有A和B两列,其中A列有些行是空的。 如果使用datatables("合并表").deletefor("A is null"),速度非常慢。 有什么办法可以提高这个效率?
|
-- 作者:y2287958 -- 发布时间:2018/7/3 15:34:00 -- combine之前不可以先排除空值吗 |
-- 作者:chnfo -- 发布时间:2018/7/3 18:33:00 -- 这个不可能啊。比如说这个月进了10种商品,但本年累计进货会有100种,而本月销售可能只售了6种。 如果要体现本年度截止本月的以下数据: 累计进货的商品种类及进货数量、销售数量的时候,很显然,销售数量行可能就有空值,因为买进来不一定立马就会卖掉。 如果用SQL还可以使用iif(A is null,0,A) 但Combine之前,如果使用groupbuilder,那怎么去赋0? 我也注意到有些文章写的,如果是用is null在SQL中时,会遍历所有行,效率低可能跟这个有关。
[此贴子已经被作者于2018/7/3 18:37:20编辑过]
|
-- 作者:cbt -- 发布时间:2018/7/3 19:30:00 -- tables("合并表").Filter="A>\'\'" 可以考虑,直接隐藏掉,没必要删除啊!
|
-- 作者:有点蓝 -- 发布时间:2018/7/3 21:13:00 -- 可以看看http://www.foxtable.com/webhelp/scr/2225.htm 具体上传实例测试
|
-- 作者:有点甜 -- 发布时间:2018/7/3 22:00:00 -- 这个问题无解。照抄了基本全部的代码,执行效率还是很低。
不清楚为什么Syscmd.Row.Delete能快速执行,我暂时没有找到变通方法。
如果你要临时移除,或者隐藏,你可以试试用filter、remove、visible等方式处理。
CurrentTable.addnew(5000) |