2

次のようなコレクションに約 5,000 万件のレコードがあるとします。

<record>
  <some_data>
    <some_data_id>112423425345235</some_data_id>
  </some_data>
</record>

したがって、おそらく次のような 100 万件のレコード (不良データ) があります。

<record>
  <some_data>
  </some_data>
</record>

some_data 要素が空である。では、some_data_idelement-range-indexをセットアップした場合、空のものをすべて削除する効率的な XQuery クエリは何でしょうか?

私が探しているのは、各要素の子レコードの存在をチェックするFLWORではないクエリだと思います。これは非効率的だと思います (つまり、データを元に戻してからフィルタリングする)

一方、cts:searchクエリでそれを行うと、データをフィルターしてから戻すように、より効率的になりますか?

これを効率的に実行できるクエリを作成し、 FLWORステートメントに関する私の仮定が正しいかどうかを確認してください。

4

1 に答える 1

5

これを効率的に行うために範囲インデックスは必要ないと思います。コンストラクターを介して「ユニバーサル」要素インデックスを使用してcts:queryも問題ありません。

cts:element-query(xs:QName('record'),
  cts:element-query(xs:QName('some_data'),
    cts:not-query(cts:element-query(xs:QName('some_data_id'), cts:and-query(())))
  )
)
于 2015-08-19T17:40:14.617 に答える