出这个复杂的SQL问题不是来难大家的,只是希望大家解解我的燃眉之急...

Comexl 2005-10-11 08:21:12
我现在有一个SQL数据库,里面储存了将近120万条记录,人员表
内含字段
姓名 身份证号码 备注

但是我现在在我关机之前,用
rs.Open "select * from person ORDER BY id DESC"
能够查询的起来.但是速度鬼慢.

关机以后发现现在想查询都查询不起来总是出现

----------
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e31'

[Microsoft][ODBC SQL Server Driver]超时已过期

/index0.asp,行23
---------

这样的提示,加了句 Server.ScriptTimeout = 900 还是不行.

现在希望象大家寻求一种特殊的查询分页的方式,原理大概类似与

我分页分到那里,就读取哪一段的的记录,例如第一页只读取 1 - 10 条,这样速度会上来的,可惜这样的方法我不会,baidu了很多次也没有办法,现在只有来这里求大家了!

希望做过大容量数据量储存的经验的朋友们给点方法,原理,代码,小弟感激不尽!

谢谢大家了.我出这个问题不是故意来难大家,只是希望大家能解解我的燃眉之急.

...全文
312 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
低调的小青蛙 2005-10-17
  • 打赏
  • 举报
回复
让 ID 作为主键 或者 给 ID 创建索引。这样 ORDER BY id DESC 就很快了。

rs.Open 本身是不需要太多时间的,一条一条的 MoveNext 才慢。

在这个地方,超时是因为“ORDER BY”排序超时,是数据库服务器报超时,因此 Server.ScriptTimeout = 900 也不能解决问题。

另外,当你要读取某一页的时候,不要采用 MoveNext 的方法。你可以算出位置直接 setAbsolute 或者 setPage 直接到达你要的页。
ShiningstarHu 2005-10-17
  • 打赏
  • 举报
回复
看一下SQL数据服务器的企业服务器的帮助文件就知道如何建立一个数据表的索引了!
jspadmin 2005-10-17
  • 打赏
  • 举报
回复
建立索引和使用存储过程肯定是需要的,关键是,你不要一下子读取那么多数据啊,尽量让sql明确化,比如指定id范围,反正就是缩小要查询的数据量,不说别的,如果你要一页显示120条到IE浏览器里,不说你程序有没有问题,IE浏览器也会崩溃的,IE可以接受的数据大小是有限度的具体是多少不太清楚,超过这个大小,就会出一些奇怪问题。尽量加些限制性的语句进去吧
Comexl 2005-10-12
  • 打赏
  • 举报
回复
谢谢楼上热心的朋友的解答.

关于如何建立索引 和 如何使用存储过程我自己在网上找过了,实在自己还是解决不不了,希望会的朋友,能够给我贴点代码出来.谢谢了!

我也是不到万不得已,不问大家要代码,现在实在没有办法.

建立索引,以前我都没有遇见过,希望大家说明白点!
kevin_gao 2005-10-12
  • 打赏
  • 举报
回复
严重同意 litcat(里子)
小昊子的iPhone 2005-10-12
  • 打赏
  • 举报
回复
学习ing......
DarkDawn 2005-10-12
  • 打赏
  • 举报
回复
是的,一定要做索引,效率才能提高!
使用存储过程可以大幅改善效率,尤其是在楼主这样的海量数据下。
woooooooow 2005-10-12
  • 打赏
  • 举报
回复
看看你的ID字段有没有索引,如果有索引即使是120万条纪录也不会慢的
lonaerd 2005-10-11
  • 打赏
  • 举报
回复
120万条关系(非大文本)数据,而且就三个字段,在SQL查询分析里处理起来应该不是很慢。
用存储过程吧,很简单的存储过程,返回查询结果就可以了;至于如何创建,以及如何调用,网上大把例子,很简单
Comexl 2005-10-11
  • 打赏
  • 举报
回复
如果哪个朋友知道储存过程的请说点出来听听
Comexl 2005-10-11
  • 打赏
  • 举报
回复
你说的这个方法我已经用过了,不好使,

因为我的ID是间断的.

例如有的人员删除了.有的还在,不能每次操作数据库了,以后将ID重新排列啊.那样也很耗费资源的啊

帮忙想想办法,谢谢楼上的,和大家!

jspadmin 2005-10-11
  • 打赏
  • 举报
回复
至于设置多大范围,你可以自己定义个变量来设定
jspadmin 2005-10-11
  • 打赏
  • 举报
回复
rs.Open "select * from person where id between 1 and 200 ORDER BY id DESC"
我这样写可以读取id为1-200之间的数据,不过估计没有使用存储过程好使
lnboy1003 2005-10-11
  • 打赏
  • 举报
回复
学习帮顶

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧