在Extensbile Strage Engine(ESE / JetBlue)中,我有一个包含我想要使用两个索引定位的数据的表
假设每行有三个整数X,Y和Z.我想快速找到X = 10和Y = 20的所有行(例如)
结果集将包含X = 10,Y = 20和Z = Z恰好是
的所有条目这可能吗?
的序列
JetSetCurrentIndex(),JetMakeKey(),JetSeek()和JetMove()让我很困惑。我不是100%这甚至可以不搜索X = 10然后过滤所有Y!= 20我自己的值?
谢谢!
答案 0 :(得分:3)
您可以使用JetIntersectIndexes API执行此操作,该API会返回两个索引范围中包含的所有记录。你需要:
对于第一个键值:
JetOpenTable
)JetSetCurrentIndex
)JetMakeKey
,JetSeek
)JetMakeKey
,JetSetIndexRange
)对于第二个键值:
JetOpenTable
)JetSetCurrentIndex
)JetMakeKey
,JetSeek
)JetMakeKey
,JetSetIndexRange
)上创建索引范围。使用两个索引范围调用JetIntersectIndexes
以创建匹配书签的临时表。
JetMove
)返回的临时表。检索记录书签(JetRetrieveColumn
)并转到记录(JetGotoBookmark
)。JetCloseTable
)。