我这里有个表46万条记录 我10秒钟要从里面取出50条记录上传给服务器 表以myid(自动编号)为索引
(然后update这个记录的sent字段)
我是这样写的rs.Open "select top 50 * from 09 where sent=0 order by myid", conn2, 3, 3
这样速度很慢 如果我这样写rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 速度是快了但是传出去的ID号 是不连续的,id会跳(我估计这是数据库真正存放数据的顺序)
1\有什么办法让 它既是连续的发出去 而且速度不要太慢 (比如 我记住上次的ID然后只打开前面的50条)
2\ 如果我就按rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 取出数据等指针指向最后一条记录时候 下次再调用 rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 它会不会把以前跳掉的记录 再找出来呢各位朋友我对数据库不是很懂 如果您有好办法 能否写下具体语句
(然后update这个记录的sent字段)
我是这样写的rs.Open "select top 50 * from 09 where sent=0 order by myid", conn2, 3, 3
这样速度很慢 如果我这样写rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 速度是快了但是传出去的ID号 是不连续的,id会跳(我估计这是数据库真正存放数据的顺序)
1\有什么办法让 它既是连续的发出去 而且速度不要太慢 (比如 我记住上次的ID然后只打开前面的50条)
2\ 如果我就按rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 取出数据等指针指向最后一条记录时候 下次再调用 rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 它会不会把以前跳掉的记录 再找出来呢各位朋友我对数据库不是很懂 如果您有好办法 能否写下具体语句
读取数据时,我们可能只需找到数据并将其发送到其他位置,例如 Web 页、XML 文档或文本文件。在这些情况下,直接使用 DataReader 对象会更有效。
参考:
http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/usingadonet.mspx
将你的select * from 09 order by myid 按MYID排xu写到一个新的表中去。
再从这个表中取数据不就达到你的目的了吗? 2\如果我就按rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 取出数据等指针指向最后一条记录时候 下次再调用 rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 它会不会把以前跳掉的记录 再找出来呢
----------不会的。这样就是一个新的查询了。 如果你要这样的功能,你可以看看ado中的PageSize ,PageSize 的用法。
我是把con.close rs.close 都关掉 然后 再做rs.Open "select top 50 * from 09 where sent=0",conn2,3,3 那么第2个问题会解决吗
rs.PageSize ,rs.Pagecount