4

「データ」と呼ばれる非常に大きなリストがあり、次のようなクエリに答える必要があります

if (x in data[a:b]):

a、b、x の値が異なる場合。

これらのクエリを高速化するためにデータを前処理することは可能ですか?

4

3 に答える 3

0

リストをデータベースに入れ、組み込みのインデックス作成、最適化、およびキャッシュを利用します。たとえば、PostgreSQL マニュアルから:

インデックスが作成されると、それ以上の介入は必要ありません。システムは、テーブルが変更されるとインデックスを更新し、テーブルの順次スキャンよりも効率的であると判断した場合に、クエリでインデックスを使用します。

ただし、単純にするために sqlite を使用することもできます (および Python の標準ライブラリで利用できるようにするため)。インデックス作成に関するPythonのドキュメントから:

Row インスタンスは、Connection オブジェクトの高度に最適化された row_factory として機能します。ほとんどの機能でタプルを模倣しようとします。

列名とインデックス、反復、表現、等価テスト、および len() によるマッピング アクセスをサポートしています。

そして、そのページの他の場所:

Row は、メモリーのオーバーヘッドがほとんどない列へのインデックスベースおよび大文字と小文字を区別しない名前ベースのアクセスの両方を提供します。おそらく、独自のカスタム辞書ベースのアプローチや db_row ベースのソリューションよりも優れているでしょう。

于 2013-08-03T23:17:36.613 に答える