2010-10-17 16 views
1

在Extensbile Strage Engine(ESE/JetBlue)中,我有一張表,其中包含我想要使用兩個索引找到的數據有沒有限制多鍵搜索的方法?

假設每行都有三個整數X,Y和Z.我想喜歡快速定位的所有行,其中X = 10且Y = 20(例如)

所得集合將包含所有的條目,其中X = 10,Y = 20和Z = wheverž碰巧是

這是可能的嗎?

JetSetCurrentIndex()的序列,JetMakeKey(),JetSeek(),和JetMove()讓我困惑。我不是100%,這甚至可能沒有搜索X = 10,然後過濾Y!= 20自己的所有值?

謝謝!

+0

如果列是整數(=非常少量的數據),我建議在兩列上定義第三個索引。這樣您就可以使用單個光標搜索「X = 10和Y = 20」。 – Soonts 2010-11-27 00:38:15

回答

3

您可以使用JetIntersectIndexes API執行此操作,該API返回包含在兩個索引範圍中的所有記錄。您需要:

  1. 對於第一個鍵值:

  2. 對於第二密鑰值:

  3. 撥打JetIntersectIndexes用兩個索引範圍創建一個匹配書籤的臨時表。

  4. 枚舉調用返回的臨時表(JetMove)。檢索記錄書籤(JetRetrieveColumn)並轉到記錄(JetGotoBookmark)。
  5. 完成後關閉臨時表! (JetCloseTable)。
相關問題