多くの連絡先と関連付けられたタグを持つかなり単純なアプリケーション (CRM など) があります。
ユーザーは、次のような多くの基準 (検索項目) を指定して検索できます。
- updated_time 過去 10 日間
- xxx のタグ
- xxx にないタグ
- first_name は xxx で始まります
- first_name が 'Smith' にありません
インデックス作成と、フィルター (not in) が複数のプロパティで機能しないことを理解しています。
私にとっては、ほとんどの場合、レポートは cron で行われるため、すべてのレコードを反復処理して処理することができます。ただし、それを行うための最適な最適化されたルートを知りたいです。
「すべて」をクエリする代わりに、appengine の設計制限で実行できるクエリに近づき、クエリ内の残りの項目を手動で照合できることを願っています。
それを行う 1 つの方法は、最初の検索項目から始めてカウントを取得し、次の検索項目を追加してカウントを取得することです。それが救済された時点で、残りの検索項目でそれらのレコードを手動で処理します。
質問は
- カウントを行わずにクエリがプログラム的に有効かどうかを事前に知る方法はありますか
- 衝突しないセット内の最高の検索項目をどのように決定しますか (not-in は多くのフィルターでは機能しないなど)。
私が見る唯一の方法は、すべての等しいフィルターを 1 つのクエリとして取得し、最初の等値フィルターを取得して実行し、検索エンティティを反復処理することです。
私を助けることができるライブラリはありますか;)