从pytables中的多个表中选择数据

时间:2014-05-02 13:55:46

标签: python linked-list pytables

我怎么以最快的方式做到这一点?

我有一个带有一些表格的.h5文件。表格每行有1000万(或更多)行。

整个文件大约10GB,(文件不适合内存)

这些表是"链接",这意味着它们都具有相同的列(ID),用作它们之间链接的列。

现在,如果我调用我的表:table1,table2 table3 table4等...我正在寻找在table2中执行快速搜索的最快方法,其中包含来自table1的ID数据。

作为一个例子,这是我到目前为止所做的:

#search on the table1 and get ID's for the first condition
searchID= "".join(["(ID==%i)|"%j['ID'] for j in table1.where('some conditions for table1')])[:-1]

#search on table2 based on the ID's from table1
for row in table2.where(searchID):
    #do something with row

问题在于我认为这不是一个非常有效的解决方案。并且,我注意到,如果searchID增长很多,Spyder就会崩溃.....

1 个答案:

答案 0 :(得分:1)

虽然没有灵丹妙药,但你可以采取一些措施来加快速度。

  1. 如果您可以将所有表格合并到一个包含更多列的表格中,那么您就不必循环两次。

  2. 您可以根据ID索引表格。这将提高搜索性能。

  3. 更改表格的表格,使其更适合您的问题。如果你把它缩小,那么这应该有助于崩溃。