高手请进!
有2个问题
1、一个几千的记录集,用那种方法取得记录数更快
(1)Do While Not rs.EOF
i = i + 1
rs.MoveNext
Loop
(2)rs.MoveFirst
If Not rs.EOF Then
i = rs.RecordCount
End If
2.一张合同表,合同编号ID(不惟一),可有多条ID相同合同,合同签订日期Date,合同起始日期startdate,合同结束日期enddate,如何用sql语句获得合同编号相同数量〉1的合同数量
问题点数:20、回复次数:15Top
1 楼jinjazz(近身剪)回复于 2005-02-01 09:03:53 得分 15
1.应该是一样的,都是O(n)数量级的
2.
select * from xxx where id in(select id from xxx group by id(having(count(*)>1)))Top
2 楼mailxin()回复于 2005-02-01 09:07:55 得分 0
1、如果数量更多呢,几万,几十万,是不是前一个更快Top
3 楼jinjazz(近身剪)回复于 2005-02-01 09:09:29 得分 0
i = rs.RecordCount??好像不对吧Top
4 楼mailxin()回复于 2005-02-01 09:15:06 得分 0
1、没错阿
2.
select * from xxx where id in(select id from xxx group by id(having(count(*)>1)))
应该没有括号吧
select * from xxx where id in(select id from xxx group by id having(count(*)>1))
Top
5 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2005-02-01 09:16:12 得分 2
1.应该是2快理由如下:ado操作返回,而你一个一个加的话是在vb程序中而且还要调用ado,作为双重负担要慢的
jinjazz考虑问题不光要看数据结构还有要看接口的Top
6 楼6742(^_^)回复于 2005-02-01 09:17:16 得分 1
(1)Do While Not rs.EOF
i = i + 1
rs.MoveNext
Loop
应该快一点的,VB处理循环的速度应该比处理IF判断语句的速度快Top
7 楼jinjazz(近身剪)回复于 2005-02-01 09:18:40 得分 0
>>i = rs.RecordCount??好像不对吧
我开始没有看到这一句Top
8 楼mailxin()回复于 2005-02-01 09:18:42 得分 0
很少用having,学习ing,哈,谢谢了,希望更多高手进来发表1的意见Top
9 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2005-02-01 09:19:51 得分 0
select * from xxx where id in(select id from xxx group by id having(count(*)>1)))
楼主你数数括号是不是双数
Top
10 楼ljhdi( )回复于 2005-02-01 09:26:45 得分 1
嘿嘿
第一个应该快些
弱弱得问一句
得到recordcount一定要循环吗?
Top
11 楼mailxin()回复于 2005-02-01 09:34:53 得分 0
2、如果2加入条件month(date)=month(getdate()) and date<getdate(),应如何处理,即要获得
当月签订合同以前存在相同合同ID的数量Top
12 楼mailxin()回复于 2005-02-01 09:47:10 得分 0
2、哈,2解决地说Top
13 楼catheryang(海杨)回复于 2005-02-01 13:39:39 得分 1
rs.movefirst
rs.movelast
i=rs.recordcount
Top
14 楼starwalker(飞)回复于 2005-02-01 13:55:00 得分 0
1、
为什么不用SELECT COUNT(*) FROM ...?Top
15 楼mailxin()回复于 2005-02-01 14:12:20 得分 0
1、当然1后面是要用到记录集,否则就不必这样了,没有人对1发表自己的看法吗Top




