ドキュメント コレクション「items」、「dictionary1」、「dictionary2」を持っている
collection "items" have 50000 records, like
{
label:"..."
dict1: "dictionary1/33333"
dict2: "dictionary2/44444"
....
}
辞書に参加すると
FOR item IN items
LET dictname = FIRST(FOR d IN dictionary1 FILTER d._id == item.dict1 RETURN d.name)
RETURN { _id: item._id, name: item.name, dict: dictname }
クエリの実行時間 ~ 150ms は、この単純なタスクには多すぎます。実験のために、私は 1 つの _id に対して dict を強制しています
FOR item IN items
LET dictname = FIRST(FOR d IN dictionary1 FILTER d._id == "dictionary1/10000" RETURN d.name)
RETURN { _id: item._id, name: item.name, dict: dictname }
クエリ実行時間 ~ 130ms
また、試したDOCUMENT機能
FOR item IN items
LET dictname = DOCUMENT("dictionary1", "dictionary1/10000")
RETURN { _id: item._id, name: item.name, dict: dictname.name }
クエリ実行時間 ~ 1500ms :((
コレクションからの単純な読み取り:
FOR item IN items
RETURN { _id: item._id, name: item.name }
クエリ実行時間 ~ 30ms
そのため、結合として_id 50000回同じドキュメントを取得すると、結果はキャッシュされません。1 つのコレクションにコンテンツが重複しているバリアントは役に立ちません。今、私はロジックをクライアント側に移動し、メモリ内のすべての辞書を選択し、クエリの後に結合し、最大 60 ミリ秒かかりますが、この方法は好きではありません。間違っています。
短時間で結合された辞書(80%同じ_id)で結果を得る方法はありますか?