前方ワイルドカードのEAV部分一致は候補集合から評価する
データベース
パフォーマンス
検索
知識
判断
EAVテーブルの値列に前方ワイルドカード付きの部分一致をかけると、通常のインデックスが効きにくく、全エンティティを起点にするとデータ規模に比例して検索コストが増える。
検索対象が別の関係や状態で候補集合として定義できるなら、まず候補のレコードIDを絞り、そのIDに結合したEAV行だけで部分一致を評価する。候補集合の条件とテナント条件はサブクエリ内でも維持する。これにより返却条件を変えずに文字列比較の対象行を限定できる。
検索インデックスへの移行は、検索頻度や同期コストを含めて判断する。低頻度の管理操作では、候補集合の絞り込みだけで必要な改善になることがある。
検証では、候補集合の絞り込み前後で複数条件を含む検索結果が同一であることを実DBテストで確認する。大規模データではクエリ実行計画も確認し、実際に候補集合から結合されることを確かめる。