| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3178 人关注过本帖
标题:如何加快TOTA命令的统计速度
只看楼主 加入收藏
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
以下是引用kesc在2017-9-13 17:26:16的发言:

是用N作字段名,没错

最好不是用N作字段名,你把字段改成别的名称试试吧,
2017-09-13 17:27
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 11楼 wangzhiyi
并不是用N作为字段名的原因
2017-09-14 15:35
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
以下是引用kesc在2017-9-14 15:35:02的发言:

并不是用N作为字段名的原因

那是什么原因,难道是你两次统计的源DBF不是同一个文件?
2017-09-14 15:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27237
注 册:2012-2-5
收藏
得分:0 
压缩上传相关文件,达到什么要求

坚守VFP最后的阵地
2017-09-14 15:52
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27237
注 册:2012-2-5
收藏
得分:0 
如果你的内存相当大,运行速度就快。

坚守VFP最后的阵地
2017-09-14 15:54
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
A-J 的10个字符不要用作字段名,其他的字母是不冲突的,但还是强烈建议用规范的字符做字段名。

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-09-14 18:19
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27237
注 册:2012-2-5
收藏
得分:0 
63万条记录不算多

坚守VFP最后的阵地
2017-09-14 19:17
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 16楼 红星二锅头
那为什么DBF允许用A-J作为字段名,EXCEL导入DBF就是用A开始作为字段名的
2017-09-15 08:33
xinjie
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:19
帖 子:276
专家分:520
注 册:2007-8-11
收藏
得分:5 
程序代码:
Clear
Set Safety Off
Set Talk Off


If !File([Test.dbf])
    Create Table Test(C C(1),N N(7,0))
    Index On C Tag C

    For m.i = 1 To 7000000
        Insert Into Test(C, N) Value([A], m.i)
    Endfor

    Use
Endif

Use Test Order C

Set Order To

m.lnStar = Seconds()
Total To TestResult Fields N On C For C = [A]
? [耗时:] + Alltrim(Str(Seconds() - m.lnStar, 5, 3)) + []

m.lnStar = Seconds()
Calculate Sum(N) to m.lnSum For C = [A]
? [耗时:] + Alltrim(Str(Seconds() - m.lnStar, 5, 3)) + []
? m.lnSum
Use
?


Use Test Order C

m.lnStar = Seconds()
Total To TestResult Fields N On C For C = [A]
? [耗时:] + Alltrim(Str(Seconds() - m.lnStar, 5, 3)) + []

m.lnStar = Seconds()
Calculate Sum(N) to m.lnSum For C = [A]
? [耗时:] + Alltrim(Str(Seconds() - m.lnStar, 5, 3)) + []
? m.lnSum
Use



[此贴子已经被作者于2017-9-15 11:47编辑过]

2017-09-15 11:43
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:15 
Help 中讲到:单个字母 A 到 J 和 M 为保留字,且不要用来作为内存变量名,容易引起歧义
比如:Select 3 等同于 Select C
还有:A.xxx 到底是表示什么?是工作区 1 中的字段名?还是 A 对象中的某个属性?

Excel 是电子数据表格,Dbf 是数据库,不要相提并论,不要比较
Excel 的列名可以使用任何字符,而 DBF 的字段名要遵循数据库的三个范式

DBF 字段名可以使用 A-J 字符,只是建议不要用,没有强迫,良好的习惯将会减少你今后的痛苦

互勉,,,

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-09-15 12:14
快速回复:如何加快TOTA命令的统计速度
数据加载中...
 
   



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

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