CHAIN&SETLL什么时候通用?

发布于 2022-09-07 19:02:19 字数 451 浏览 21 评论 9

当判断一个key是否存在时,chain和setll好像都可以实现...
key   chain     file                     30(HI)
or
key   setll       file                     30(eq)
这里,chain和setll是完全等价的么?
对于chain,*in30=*off表示找到key,
对于setll呢?*in30=*on是代表找到key么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

你怎么敢 2022-09-09 23:34:46

如果等价的时候那只要用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之后就需要读第二条等于键值的记录,当然找不到

凤舞天涯 2022-09-09 23:19:56

CHAIN(N),然后READ应该可以吧

初吻给了烟 2022-09-09 23:08:49

setll 后面 read会成功
但是 chain 之后 read 不一定成功,自己好好想想为什么,就懂了。

吃不饱 2022-09-09 22:55:22

如果你只是为了判断是否存在的话,那就是等价的。
区别是:CHAIN是定位和读取。
SETLL只是定位,读取的话要结合READ.
不对之处,希望指正。:wink:

青芜 2022-09-09 22:49:32

Thanks.

燃情 2022-09-09 22:20:08

本帖最后由 zhangv520 于 2010-06-13 14:58 编辑

当判断一个key是否存在时,chain和setll好像都可以实现...
key   chain     file                     30( ...
first_come 发表于 2010-06-12 15:39

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

不…忘初心 2022-09-09 21:31:56

回复 3# nolater

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

提笔落墨 2022-09-09 15:48:12

当判断一个key是否存在时,chain和setll好像都可以实现...
key   chain     file                     30( ...
first_come 发表于 2010-06-12 15:39

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

就此别过 2022-09-08 20:27:45

是的,都可以,判断KEY是否存在时,SETLL的效率更高。
setll 目前也是SQL没办法取代的一种操作。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文