在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
寻找开始第一个索引范围(JetMakeKeyJetSeek
在第一个值上创建索引范围(JetMakeKeyJetSetIndexRange
对于第二个键值:
再次打开桌子(JetOpenTable
选择其他索引(JetSetCurrentIndex
在索引中查找第二个键值的开头(JetMakeKeyJetSeek
在第二个值(JetMakeKeyJetSetIndexRange)上创建索引范围。
使用两个索引范围调用JetIntersectIndexes以创建一个包含匹配书签的临时表。
枚举调用返回的临时表(JetMove)。检索记录书签(JetRetrieveColumn)并转到记录(JetGotoBookmark)。
完成后关闭临时表!(JetCloseTable)。

关于database - 在ESE(JetBlue)中,有没有一种方法可以限制多个键的搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3955751/

10-13 03:21