在ESE(捷蓝航空)有没有办法限制多个键的搜索?

时间:2010-10-17 23:17:10

标签: database winapi extensible-storage-engine

在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我自己的值?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用JetIntersectIndexes API执行此操作,该API会返回两个索引范围中包含的所有记录。你需要:

  1. 对于第一个键值:

  2. 对于第二个键值:

  3. 使用两个索引范围调用JetIntersectIndexes以创建匹配书签的临时表。

  4. 枚举通话(JetMove)返回的临时表。检索记录书签(JetRetrieveColumn)并转到记录(JetGotoBookmark)。
  5. 完成后关闭临时表! (JetCloseTable)。