怎样在数据窗口的一列int型值中查找一个值是否存在,十分要求速度!(替代方案也可)

Steve_csdn 2003-01-23 12:41:24
如题,谢谢指教。
...全文
73 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinalht 2003-01-31
  • 打赏
  • 举报
回复
排序后用折半查找,应该就可以了吧.
Steve_csdn 2003-01-28
  • 打赏
  • 举报
回复
代替方案??
我想用多台服务器同时协作来完成,不知大家有什么高见??
Steve_csdn 2003-01-28
  • 打赏
  • 举报
回复
我就是这样想的,那位可以具体指教一下?谢谢
Leehunter 2003-01-28
  • 打赏
  • 举报
回复
每秒几万次的查询?是否算过需要什么样的机器?
数据库肯定是不行的了。可以考虑用多台服务器同时协作完成。最好接收后就根据数据范围提交给某台服务器查询,也许能提高数据。
booksfount 2003-01-28
  • 打赏
  • 举报
回复
用存储过程可否?
编程夜猫 2003-01-27
  • 打赏
  • 举报
回复
以上的方法还不能满足你的要求,我看你只好认真考虑一下从你接收数据到检索判断等一连串的处理,是否仍有可能提高速度,尽量优化你的处理过程。
Steve_csdn 2003-01-26
  • 打赏
  • 举报
回复
索引是早就建了的,
现在的问题不是数据库性能,而是代替方案,
因为再快的数据库服务器也不能完成每秒几万次的查询。
liuyxit 2003-01-26
  • 打赏
  • 举报
回复
用这个应是最快的:
给该字段建索引,
select count() from table where 字段名=:变量值;
因为:在DBMS里查询是最快的,特别是记录多。(自己有优化),查询后只传回一个值,省了很多记录的传输。

xiezhsh3 2003-01-26
  • 打赏
  • 举报
回复
同意: liuyxit(工作太多,压力太大!) 的意见, 增加该列的索引可以提高检索速度的
tchatcha 2003-01-25
  • 打赏
  • 举报
回复
up
jjweid 2003-01-24
  • 打赏
  • 举报
回复
find还不行?
用select count(*)呢?
sduzjw 2003-01-24
  • 打赏
  • 举报
回复
使用SQL语句吧,相对来说会快些,不要把大量的数据取到客房端,这样会增加系统的负担,使系统变慢
Steve_csdn 2003-01-24
  • 打赏
  • 举报
回复
实际情况本来是这样的,
数据库里有一个表,这个表只有一列,而且基本不更新,大约有100万条int型数据,整个系统要做的是连续接收一个由int型数据组成的数据包流,判断
其中的每一条数据是否存在于表中,每秒大概要判断几万次。

我想用多台服务器同时协作来完成,不知大家有什么高见??
Leehunter 2003-01-24
  • 打赏
  • 举报
回复
把数据检索到本地来提高速度本来就是错误的思路。
如果你的数据量少的话,我相信本地的速度肯定可以忍受,并且与直接在数据库查询等效。
如果你的数据量大的话,那么把数据提取到本地所花的时间会更多。
所以,还不如直接在数据库中查询,看是否存在。
zzutligang 2003-01-24
  • 打赏
  • 举报
回复
看来你只有将这一列的数据另行保存到一个数组或其他的地方,然后对这些数据排序,这些操作可以在检索数据的时候完成,不影响你的查找时间。然后需要的时候利用二分法查找,或则其他的查找方法(可以参考数据结构的书),如果这样还不行的话,那你就祈祷上帝帮你的忙吧!!!
gogg 2003-01-23
  • 打赏
  • 举报
回复
long ll_find
ll_find = dw_1.find("字段=" + string(要查找的值),1,dw_1.rowcount())

在循环语句里,如果数据窗口的总行数不变,可以先求出总行数,用总行数变量代替最后一个参数,会提高查找速度。如果连续查找,可以用ll_find + 1作第二参数。

andyzq 2003-01-23
  • 打赏
  • 举报
回复
使用find()函数,可以查找datawindow中任意类型的值
boyliulang 2003-01-23
  • 打赏
  • 举报
回复
long ll_found, ll_text

ll_text = 4
ll_found = dw_1.Find( "int_field = long('"+string(ll_text)+"')
1, dw_1.RowCount())
if ll_found > 0 then
dw_1.scrolltorow(ll_found)
end if
具体的你可以参考pb帮助

Steve_csdn 2003-01-23
  • 打赏
  • 举报
回复
谢谢几位,
不过我试了一下,直接遍历的方法慢的没法用,
find虽然比直接遍历快10倍,还是太慢,还不如从数据库中直接查询。

我最关心的是速度,之所以要把表读到本地数据窗口,就是想快些,无他。
(替代方案也可)


shahand 2003-01-23
  • 打赏
  • 举报
回复
for i = 1 to dw_1.rowcount
if = then
lb_exsist = true
exit
end if
next

1,108

社区成员

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

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