免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 10854 | 回复: 20
打印 上一主题 下一主题

CHAIN&SETLL什么时候通用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-12 15:39 |只看该作者 |倒序浏览
当判断一个key是否存在时,chain和setll好像都可以实现...
key   chain     file                     30(HI)
or
key   setll       file                     30(eq)
这里,chain和setll是完全等价的么?
对于chain,*in30=*off表示找到key,
对于setll呢?*in30=*on是代表找到key么?

论坛徽章:
0
2 [报告]
发表于 2010-06-12 19:54 |只看该作者
是的,都可以,判断KEY是否存在时,SETLL的效率更高。
setll 目前也是SQL没办法取代的一种操作。

论坛徽章:
0
3 [报告]
发表于 2010-06-13 00:00 |只看该作者
当判断一个key是否存在时,chain和setll好像都可以实现...
key   chain     file                     30( ...
first_come 发表于 2010-06-12 15:39



    chain 找到时 指示符才亮,你这里说反了

论坛徽章:
0
4 [报告]
发表于 2010-06-13 09:16 |只看该作者
回复 3# nolater


    chain没找到才为*ON,楼主说的是对的

论坛徽章:
0
5 [报告]
发表于 2010-06-13 14:48 |只看该作者
本帖最后由 zhangv520 于 2010-06-13 14:58 编辑
当判断一个key是否存在时,chain和setll好像都可以实现...
key   chain     file                     30( ...
first_come 发表于 2010-06-12 15:39



    *OFF是找到了!*on是没有找到! SETLL将游标定位到所有记录之前

论坛徽章:
0
6 [报告]
发表于 2010-06-14 08:16 |只看该作者
Thanks.

论坛徽章:
0
7 [报告]
发表于 2010-06-19 12:01 |只看该作者
如果你只是为了判断是否存在的话,那就是等价的。
区别是:CHAIN是定位和读取。
SETLL只是定位,读取的话要结合READ.
不对之处,希望指正。:wink:

论坛徽章:
0
8 [报告]
发表于 2010-06-22 14:28 |只看该作者
setll 后面 read会成功
但是 chain 之后 read 不一定成功,自己好好想想为什么,就懂了。

论坛徽章:
0
9 [报告]
发表于 2010-06-22 22:34 |只看该作者
CHAIN(N),然后READ应该可以吧

论坛徽章:
0
10 [报告]
发表于 2010-06-25 13:33 |只看该作者
如果等价的时候那只要用CHAIN就可以了
CHAIN 始终只可以找到第一条跟KEY值相等的记录,无论你CHAIN多少次
SETLL+READE用在和循环配套使用,从第一条跟KEY值相等的记录读起,可以读到所有等于KEY值的记录,如果PF中有多条等于键值记录的话

前面有人说过SETLL后可以用READE读到,而CHAIN后在用READE读可能就读不到
这是因为当PF中只有一条等于键值的记录
SETLL 相当于光标移动到第一条等于键值记录的地方,然后用READE读取(到此为止的操作可用CHAIN代替,不同的是前者I/0操作两次,用CHAIN只是一次)

如果CHAIN后在用READE的话,就相当于,SETLL+READE+READE ,如果PF中只有一条等于键值记录那么CHAIN+READE之后就需要读第二条等于键值的记录,当然找不到
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP