pytables - 如何加快列表中数据的检索速度

时间:2012-04-08 18:45:20

标签: pytables

我有一个以下列格式返回约100万行的查询:

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

并且花了超过5分钟。

当我单独尝试tbl.where(conditions)时,查询花了不到一秒的时间,因此大部分时间似乎都花在迭代列表推导中的行上。

是否有更快的方法从查询中检索field1 / field2? (我有足够的RAM将结果存储在内存中)

1 个答案:

答案 0 :(得分:0)

我对你的“tbl”一无所知,但这里有一些我要看的东西:

  1. 你的桌子是否使用压缩? print tbl.filters.complevel
  2. 假设您的“条件”取决于表字段您是否为这些字段创建了索引? print tbl.indexedcolpathnames
  3. 如果您使用idx = tbl.get_where_list(conditions)tbl[:]['field1'][idx]
  4. ,该怎么办?
  5. 如果您有足够的内存,请尝试在内存中打开文件:
    h5file = tables.open_file('myfile.h5', driver="H5FD_CORE")
    tbl = h5file.root.tbl并查看是否有帮助。