100分求数据库快速搜索的方法?(up有分)

cnlyh1 2003-08-19 09:59:22
两个表:村,镇

表: 村 镇
村ID,村名,村信息,镇ID 镇ID,镇名

现在我想搜索100个村名,并且这100个村都在一个镇(该镇的id为5)里。如果我用
for i=1 to 100
select 村信息 into :v_1(i) from 村 where 镇id=5 and 村名=村名(i)
next

这样效率是不是很低,因为每次都要遍历数据库中的所有数据,判断它镇id是否等于5,然后再判断村名是否匹配?而我的想法是只在当前镇所包含的村里搜索,而不需要遍历所有的村。有没有更快捷的方式?我对数据库了解不多,请高手帮助!
...全文
65 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yao_xh 2003-08-20
  • 打赏
  • 举报
回复
用datastore 一次性检索完毕后,过滤或查询很快。
runsoft 2003-08-20
  • 打赏
  • 举报
回复
可以使用使用datastore,把镇id 村名,作为参数传入数据窗口

for i = 1 to 100
ds_1.retrieve(id,name)
//得到村的信息
next
flyhot 2003-08-20
  • 打赏
  • 举报
回复
up
yang528119 2003-08-20
  • 打赏
  • 举报
回复
游标
polugen 2003-08-20
  • 打赏
  • 举报
回复
select 村信息 from 村 where 镇id=5 and 村名 in (村名1,村名2>>>>>)
lkyuan 2003-08-20
  • 打赏
  • 举报
回复
当然用游标了`~~~~
—————————————————————————————————
认认真真看贴,老老实实灌水,坚持不懈接分,努力进取成星。
diki 2003-08-20
  • 打赏
  • 举报
回复
declare cunzhen cursor for
select 村信息 from 村 where 镇id=5 and 村名=村名(i)
open cunzhen
fetch cunzhen into :v_1(i)
do while (sqlca.sqlcode=0)
if(i<100) then
i++;
else return
fetch cunzhen into :v_1(i)
loop
close cunzhen
commit;
sslarly 2003-08-20
  • 打赏
  • 举报
回复
用游标或数据源计算出镇id=5的所有村庄,用for循环进行计算,这样会很快的。
冷箫轻笛 2003-08-20
  • 打赏
  • 举报
回复
用游标
dingzhaofeng 2003-08-20
  • 打赏
  • 举报
回复
mark!
nhdj 2003-08-20
  • 打赏
  • 举报
回复
感觉还是推荐用游标,方便、实惠、他好、我也好 ^_^
liaolwj 2003-08-20
  • 打赏
  • 举报
回复
你可以做一个datastore,数据源就是表村,检索参数是id,
然后才从该datastore中查找对应记录,同时你的表村中的镇id需要建立一个索引,那你在retrieve(id)时,你的速度就快多了。
ll_row = ds_data.find("村 = '' + 村 + "'",1,ds_data.rowcount())
if ll_row > 0 then
//找到
end if
klbt 2003-08-20
  • 打赏
  • 举报
回复
用数据窗口很方便的,设置检索条件,先检索出镇id=5的所有村庄,再取值。

1,075

社区成员

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

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