| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:如何优化编码速度
只看楼主 加入收藏
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
结帖率:60%
收藏
 问题点数:0 回复次数:9 
如何优化编码速度
给查询的某供应商每条记录编一个ID号,字段D是供应商名称
use jxc  &&包含非常多供应商的记录
md="某供应商"
SET FILT TO d=md
SCAN
IF ID=0
SELECT MAX(ID) FROM jxc WHERE d=md INTO ARRAY IDH
REPLACE ID WITH IDH+1
ENDI
ENDSCAN

当记录非常多时,耗时长,请问各位大神如何优化

[此贴子已经被作者于2015-11-26 14:38编辑过]

2015-11-26 13:45
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
如果我没有理解错的话,应该是酱紫的:

use jxc
md="某供应商"
* SCAN
SELECT MAX(ID) FROM jxc WHERE d=md INTO ARRAY IDH
REPLACE ID WITH IDH+1 All
* ENDSCAN

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2015-11-26 14:08
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用kesc在2015-11-26 13:45:38的发言:

给每条记录编一个ID号

use jxc
md="某供应商"
SCAN
SELECT MAX(ID) FROM jxc WHERE d=md INTO ARRAY IDH
REPLACE ID WITH IDH+1
ENDSCAN

当记录非常多时,耗时长,请问各位大神如何优化

看你这段代码的意思,d应该是表文件里的一个字段名,指向供应商的名字。然后需要把各供应商的ID都变成相关的目前最大号+1。是不是这样?

如果不是这样,请说明一下SELECT-SQL命令中的“d”是什么意思;如果是这样,我对作为查询条件标准的md变量是一个固定值有点不理解,也请说明一下。我觉得只有这两件事搞清楚了,才可能想出合理的代码。
2015-11-26 14:19
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 3楼 taifu945
D是供应商名称没错
2015-11-26 14:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27162
注 册:2012-2-5
收藏
得分:0 
楼主的问题没有说清楚,无法帮助你!
最好举例说明.............

坚守VFP最后的阵地
2015-11-26 14:40
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:654
专家分:2167
注 册:2014-2-7
收藏
得分:0 
USE jxc
md = "某供应商"
CALC MAX(id) TO nMax FOR d = md
SCAN FOR d = md AND id = 0
    REPLACE ID WITH nMax + 1
    nMax = nMax + 1
ENDSCAN

泉城飞狐
2015-11-26 14:44
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 5楼 sdta
简化成
use jxc
SCAN
IF ID=0
SELECT MAX(ID) FROM jxc INTO ARRAY IDH
REPLACE ID WITH IDH+1
ENDI
ENDSCAN
如何优化

2015-11-26 14:45
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 6楼 liuxingang28
我明白了,取最大号不用放入SCAN重复取最大号,而用nMax = nMax + 1
替代,这样可以加快速度,谢谢liuxingang28


[此贴子已经被作者于2015-11-26 15:20编辑过]

2015-11-26 14:53
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27162
注 册:2012-2-5
收藏
得分:0 
不用这么麻烦
用SQL命令嵌套查询

坚守VFP最后的阵地
2015-11-26 15:54
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
是的。一句 Update-SQL 语句可以搞点。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2015-11-26 16:18
快速回复:如何优化编码速度
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023860 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved