в ESE (JetBlue) есть ли способ ограничить поиск несколькими ключами? - PullRequest
1 голос
/ 18 октября 2010

В 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 Ответ

3 голосов
/ 12 ноября 2010

Это можно сделать с помощью JetIntersectIndexes API, который возвращает все записи, содержащиеся в двух индексных диапазонах. Вам необходимо:

  1. Для первого значения ключа:

  2. Для второго значения ключа:

  3. Вызовите JetIntersectIndexes с двумя индексными диапазонами, чтобы создать временную таблицу соответствующих закладок.

  4. Перечислить временную таблицу, возвращаемую вызовом (JetMove). Получите закладки записей (JetRetrieveColumn) и перейдите к записям (JetGotoBookmark).
  5. Закройте временную таблицу, когда закончите! (JetCloseTable).
...