「データ」と呼ばれる非常に大きなリストがあり、次のようなクエリに答える必要があります
if (x in data[a:b]):
a、b、x の値が異なる場合。
これらのクエリを高速化するためにデータを前処理することは可能ですか?
「データ」と呼ばれる非常に大きなリストがあり、次のようなクエリに答える必要があります
if (x in data[a:b]):
a、b、x の値が異なる場合。
これらのクエリを高速化するためにデータを前処理することは可能ですか?
リストをデータベースに入れ、組み込みのインデックス作成、最適化、およびキャッシュを利用します。たとえば、PostgreSQL マニュアルから:
インデックスが作成されると、それ以上の介入は必要ありません。システムは、テーブルが変更されるとインデックスを更新し、テーブルの順次スキャンよりも効率的であると判断した場合に、クエリでインデックスを使用します。
ただし、単純にするために sqlite を使用することもできます (および Python の標準ライブラリで利用できるようにするため)。インデックス作成に関するPythonのドキュメントから:
Row インスタンスは、Connection オブジェクトの高度に最適化された row_factory として機能します。ほとんどの機能でタプルを模倣しようとします。
列名とインデックス、反復、表現、等価テスト、および len() によるマッピング アクセスをサポートしています。
そして、そのページの他の場所:
Row は、メモリーのオーバーヘッドがほとんどない列へのインデックスベースおよび大文字と小文字を区別しない名前ベースのアクセスの両方を提供します。おそらく、独自のカスタム辞書ベースのアプローチや db_row ベースのソリューションよりも優れているでしょう。