在extensbile strage engine(ese/jetblue)中,我有一个表,其中包含我想使用两个索引定位的数据
假设每一行有三个整数x、y和z。我想快速定位x=10和y=20的所有行(例如)
结果集将包含x=10、y=20和z=wheverz的所有条目
这可能吗?
顺序
jetsetcurrentindex()、jetmakekey()、jetseek()和jetmove()让我困惑。我不是100%这甚至是可能的,不搜索x=10,然后过滤所有的值在y!=20我自己?
谢谢!
最佳答案
您可以使用JetIntersectIndexesapi实现这一点,它返回包含在两个索引范围内的所有记录。你需要:
对于第一个键值:
打开桌子(JetOpenTable
)
选择索引(JetSetCurrentIndex
)
寻找开始第一个索引范围(JetMakeKey
,JetSeek
)
在第一个值上创建索引范围(JetMakeKey
,JetSetIndexRange
)
对于第二个键值:
再次打开桌子(JetOpenTable
)
选择其他索引(JetSetCurrentIndex
)
在索引中查找第二个键值的开头(JetMakeKey
,JetSeek
)
在第二个值(JetMakeKey
,JetSetIndexRange
)上创建索引范围。
使用两个索引范围调用JetIntersectIndexes
以创建一个包含匹配书签的临时表。
枚举调用返回的临时表(JetMove
)。检索记录书签(JetRetrieveColumn
)并转到记录(JetGotoBookmark
)。
完成后关闭临时表!(JetCloseTable
)。
关于database - 在ESE(JetBlue)中,有没有一种方法可以限制多个键的搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3955751/