groonga/grnxx

レコード一覧を作成するときに簡単なフィルタを適用できるようにする

Opened this issue · 0 comments

概要

現在の実装では,索引を使わずにフィルタリングをおこなうとき,テーブルからレコードの一覧を作成し,それに対してフィルタを適用します.
このとき,フィルタにより削られるレコードが多ければ,レコードの一覧を作成するコストが無視できなくなるのではないかと思います.

そこで,カラムに Index::find_in_range() と同様のインタフェースを追加し,レコードの一覧を作成する時点で単純なフィルタを適用できるようにしてはどうかと考えました.
たとえば, X < 100 という条件を満たすレコードの一覧を作成できるようにするわけです.

クエリが (X < 100) && (Y > 10) であれば, (X < 100) もしくは (Y > 10) からレコードの一覧を作成し,もう一方をフィルタとして適用するという使い方を想定しています.

まずは,シンプルな実装を用意して速度差を確認します.
十分な効果が得られるようであれば,本格的な検討をおこないます.