标题:数据组合问题
只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 20楼 mywisdom88
是的

坚守VFP最后的阵地
2018-08-26 20:45
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
*!*    CREATE CURSOR tt(N1 I,N2 I,N3 I,N4 I,N5 I,N6 I,N7 I,N8 I)

*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (1,1,1,1,1,1,1,1)
*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (2,2,2,2,2,2,2,2)
*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (3,3,3,3,3,3,3,3)
*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (4,4,4,4,4,4,4,4)
*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (5,5,5,5,5,5,5,5)
*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (6,6,6,6,6,6,6,6)
*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (7,7,7,7,7,7,7,7)
*!*    INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (8,8,8,8,8,8,8,8)

IF USED("TT")
   SELECT TT
ELSE
   USE d:\TT.DBF IN 0
ENDIF

S1=SECONDS()

SELECT INT(T1.N1*10000000 + T2.N2*1000000 + T3.N3*100000 + T4.N4*10000 + T5.N5*1000 + T6.N6*100 + T7.N7*10 + T8.N8) AS NN ;
 FROM (SELECT N1 FROM tt WHERE N1<8) as t1 ,;
      (SELECT N2 FROM tt WHERE N2<8) as t2 ,;
      (SELECT N3 FROM tt WHERE N3<8) as t3 ,;
      (SELECT N4 FROM tt WHERE N4<8) as t4 ,;
      (SELECT N5 FROM tt WHERE N5<8) as t5 ,;
      (SELECT N6 FROM tt WHERE N6<8) as t6 ,;
      (SELECT N7 FROM tt WHERE N7<8) as t7 ,;
      (SELECT N8 FROM tt WHERE N8<8) as t8  ;
 INTO CURSOR T9 READWRITE

?SECONDS()-S1,RECCOUNT()

BROWSE

IF USED("TT")
   USE IN TT
ENDIF
2018-08-26 21:07
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
* 用这样的测试数据,用时7.433秒,5764801条记录
CREATE CURSOR tt(N1 I,N2 I,N3 I,N4 I,N5 I,N6 I,N7 I,N8 I)

INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (1,1,1,1,1,1,1,1)
INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (2,2,2,2,2,2,2,2)
INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (3,3,3,3,3,3,3,3)
INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (4,4,4,4,4,4,4,4)
INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (5,5,5,5,5,5,5,5)
INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (6,6,6,6,6,6,6,6)
INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (7,7,7,7,7,7,7,7)
INSERT INTO tt(n1,n2,n3,n4,n5,n6,n7,n8) VALUES (8,8,8,8,8,8,8,8)

* 用楼主的记录,0.0003秒,64条记录
* WIN7 64,8G内存,I5 3470
2018-08-26 21:11
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
2018-08-26 21:22
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 24楼 mywisdom88
谢谢mywisdom88的帮助
原来的代码中
FOR
    IF
    ENDIF
ENDFOR
嵌套层次太多,速度也有点不理想,想加以改进。这段代码中主要生成两个数据:一个代码(dm)和一个值,这两个数据都是通过数组生成的。经过我的改进,速度反而更不理想了。但代码比原来看着舒服了,有利有弊啊。

坚守VFP最后的阵地
2018-08-26 21:44
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
问题圆满解决,谢谢大家的关心

坚守VFP最后的阵地
2018-08-28 19:28
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
怎么做的。。。
2018-08-28 22:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
获取数组的行列位置,把符合条件的行列位置重新组合成N条记录,这样就得到了DM和值这两个数据。避开了FOR...ENDFOR

坚守VFP最后的阵地
2018-08-28 22:35
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 

坚守VFP最后的阵地
2018-08-28 22:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489421-1-1.html




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

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