2012-04-08 10 views
3

にデータの検索を高速化する方法を、私は次の形式で約1万行を返すクエリがあります。pytablesリスト

data = [[i['field1'], i['field2']] for i in tbl.where(conditions)] 

をし、それ以上の5分を取っています。

tbl.where(conditions)を単独で試してみたところ、クエリの処理時間は1秒未満でしたので、ほとんどの時間はリストの理解の行を繰り返し処理するために費やされたようです。

クエリからfield1/field2を高速に取得する方法はありますか? (私はメモリに結果を保存するのに十分なRAMを持っている)

答えて

0

私はあなたの「TBL」について何を知っているが、ここで私は見ますがいくつかありません。

  1. 圧縮を使用して、テーブルのですか? print tbl.filters.complevel
  2. 「条件」は、これらのフィールドのインデックスを作成したテーブルフィールドによって異なります。
    h5file = tables.open_file('myfile.h5', driver="H5FD_CORE")
    tbl = h5file.root.tblをし、それが助けかどうかを確認:あなたは十分なRAMを持っている場合は、idx = tbl.get_where_list(conditions)tbl[:]['field1'][idx]
  3. を使用している場合、メモリ内のファイルを開いてみてください何print tbl.indexedcolpathnames