简单问题,数据库中数据太多了,怎么办?

guiyings 2003-09-12 05:25:33
我的数据库中有个表(t_text)里的数据太多了,窗口打开时候好慢,我常以为死机器了。我在窗口的open()里直接retrieve了。
我要怎么做才能让数据读取的快一点?是要在数据库里写存储过程吗?是的话怎么写呀?该存储过程在pb中又要如何调用?不是的话又要怎么办?
...全文
539 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
rola 2003-09-15
  • 打赏
  • 举报
回复
有两种办法:
1,设置 AsNeeded=Yes"
2,在数据窗体上设置一个retrieve参数,每次只加载一部分数据
kalven_chan 2003-09-15
  • 打赏
  • 举报
回复
一:数据库本身对数据量特别多的加上索引非常重要
二:才PB数据窗口中,设置retrieved as needed,这样每次只显示看到的数据窗口大小,你拉滚动条自己会检索,节省不少资源,不过做统计和遍历数据窗口的时候,不爽的
zzutligang 2003-09-15
  • 打赏
  • 举报
回复
给你举个例子,我的数据库(SQL Server 7.0)的一个表里有40多万条纪录,我用查询分析器在本机运行一个查询,条件字段不是主键,需要将近10多秒的时间,在另外一台机器上用ODBC连接上这个数据库查询,返回"超时已经过期"的错误提示,根本就检索不到数据。但我将这个条件字段建立一个索引,后只要0.3秒的时间。这就是差别。
结论:如果数据库设计的不完善,就别想通过其他的手段提高性能。
gengswallow 2003-09-15
  • 打赏
  • 举报
回复
1.在open事件中先写如下代码,意思就是只让数据在缓冲区中。
dw_1.settransojbect(sqlca)
dw_1.setfilter("1=0")
dw_1.filter()
dw_1.retrieve()
2.当点击某按钮或触发某事件时,用该条件。
ls_fi = "条件"
dw_1.setfilter(ls_fi)
dw_1.filter()
CQP 2003-09-15
  • 打赏
  • 举报
回复
1、数窗设置只检索一屏
dw_1.settransobject(sqlca)
dw_1.Modify("DataWindow.Retrieve.AsNeeded=Yes")
dw_1.post retrieve()

2、建立索引试试
eaglechou 2003-09-14
  • 打赏
  • 举报
回复
用索引可能会快一些吧
hongweicn 2003-09-13
  • 打赏
  • 举报
回复
可以用retrieve.asneeded业试一下
guiyings 2003-09-13
  • 打赏
  • 举报
回复
是在窗口的打开open()事件里这样写吗?
dw_1.settransobject(sqlca)
dw_1.Modify("DataWindow.Retrieve.AsNeeded=Yes")
dw_1.post retrieve()
我发现还是慢。
这个表好奇怪的,我发现不能建立索引。oprname(nvarchar类型)+data(nvarchar类型)+oprtime(datatime类型)按道理是可以建立索引的,可我建立后,包错如下:
服务器:消息1946,级别16,状态1
操作失败。1020字节的索引条目长度(属于索引‘index_type')超过了900字节的最大长度。我要怎么改对呀?
eastpond 2003-09-13
  • 打赏
  • 举报
回复
同意liu08()
liu08 2003-09-13
  • 打赏
  • 举报
回复
可以建立索引,或者你可以用数据窗口 retrieve AsNeeded 选项试一试。
guiyings 2003-09-13
  • 打赏
  • 举报
回复
这是别人建立的表,没有主键,每个字段都可以为空的,还有重复值,能建立索引吗?
guiyings 2003-09-13
  • 打赏
  • 举报
回复
要是打开时候数据不全部检索出来,窗口打开后,我在窗口中的每个控件都是用来实现过滤查询功能的。那每点击(clicked)一个控件都得重新检索表中所有的数据,那查询不是太慢了吗?每点击(clicked)一个控件得等好久才有数据出现,那不比打开窗口时候等一下更麻烦吗?
eminena 2003-09-13
  • 打赏
  • 举报
回复
加检索参数,如某时间点以后的数据,在必须显示全部数据时重新 retrieve
pobosskey 2003-09-12
  • 打赏
  • 举报
回复
限定一个时间,检索不到的就不检索,拖滚动条的时候再进行剩下的检索工作!
klbt 2003-09-12
  • 打赏
  • 举报
回复
适当的索引很重要。
winwhere 2003-09-12
  • 打赏
  • 举报
回复
只要索引建立的好,按条件检索出来,是很快的。
eaglechou 2003-09-12
  • 打赏
  • 举报
回复
在哪儿retrieve 都一样
加一些检索条件也许回好一些
不要一次全部检索出来
佣工7001 2003-09-12
  • 打赏
  • 举报
回复
dw_1.post retrieve()
huangxinru 2003-09-12
  • 打赏
  • 举报
回复
非要全部取出来吗?加一些条件。
warchild 2003-09-12
  • 打赏
  • 举报
回复
不能在open()里retrieve所以数据

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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