検索エンジンに関する研究プロジェクトを行っていますが、for ループのパフォーマンスに問題があります。次の問題があります。
for value in hash_array.keys():
cell= db_conn.use_client().hql_query(db_conn.use_namespace(),'SELECT doc_text FROM SE_doc_text WHERE ROW=\"'+
value+"\" SCAN_AND_FILTER_ROWS LIMIT 1").cells
list_result[value].append(cell[0].value)
ハイパーテーブルを使用して最高のパフォーマンスを実現したいのですが、hash_array.keys() の 20.000 または 30.000 要素で使用すると、5 ~ 6 分のような結果が得られるため、非常に遅くなります。断食を行う他の方法はありますか? または、検索エンジン全体にプラン b を使用する必要があります。
クエリのパフォーマンス:
Elapsed time: 0.10 s
Avg value size: 1428.00 bytes
Avg key size: 57.00 bytes
Throughput: 595190.38 bytes/s
Total cells: 1
Throughput: 400.80 cells/s
ハードウェアでテスト済み:
8gb 1600mhz
1055t amd
追加の事実:
Without SCAN_AND_FILTER_ROWS: 1.78163504601ms
With SCAN_AND_FILTER_ROWS: 3.27163504601ms
Only for loop: 0.0630ms
(答えからの)解決策で、私は次のことを持っています:
stringRow = ' AND '.join(["ROW = \""+value + "\"" for value in hash_array.keys()])
cell = db_conn.use_client().hql_query(db_conn.use_namespace(),stringBatch+stringRow).cells
Results: 0.355320930481ms for 2097 documents
1.0214779377 for 3565 documents
それは良いことですが、最善の解決策ではありません。