2

django.core.paginator import ObjectPaginatorを使用しているときに、次のエラーが発生します。

NeedIndexError:組み込みのインデックスは、このクエリとデータに対して十分に効率的ではありません。このクエリの複合インデックスを追加してください。

元のクエリは次の形式で記述されています。

query = models.Cdr.all()
query.filter("var1 =", var1 )
query.filter("var2 =", var2)
query.filter("var3 =", var3)

ObjectPaginatorが要素の数をカウントしようとすると、この例外が発生しますが、var1の一部の値に対してのみです。

他の値を操作しているときに、 var1の一部の値に対してこのクエリが失敗するのはなぜですか?

この場合、何をお勧めしますか?

4

2 に答える 2

2

NeedIndexErrorオカレンスを修正するために推奨される一般的な手順はのとおりです。複合インデックスは、データの量と構造 (var1値に応じて変化する可能性があります) に応じて開発に基づいて構築されていない可能性があると思いますが、必要であることが判明しました (エラーメッセージとして、効率上の理由でクエリを中止しないようにするため)。ヒントとニックはこのコメントで確認します) 実際のストアで実行する場合。

于 2009-09-01T17:48:34.080 に答える
1

私はこの問題に遭遇しました。問題はコードではなく、GAE のインデックス システム自体にあります。これを修正するには、index.yaml ファイルにインデックスを明示的に書き込む必要があります。それは私にとってはうまくいきましたが、インデックスを明示的に定義すると必ずしも修正されるとは限らないことを他の場所で読みました。とにかく、私が開いたバグにスターを付けることをお勧めします。

GAE は、等式フィルターのみを持つクエリのインデックスを自動的に作成しません。代わりに、Google が「ジグザグ マージ ジョイン」(Google it) と呼ぶアルゴリズムを使用します。このアルゴリズムは、特定の状況で故障しているようです。Google チームがこの問題の修正に取り組んでいるようですが、状況によってはまだポップアップします。

于 2011-06-12T05:34:19.577 に答える