我应该如何以最快的方式做到这一点?
我有一个.h5文件与一些表。每个表有大约1000万(或更多)行。
整个文件大约10GB,(文件不适合内存)
这些表是"链接的",这意味着它们都有相同的列(ID),用作它们之间链接的列。
现在,如果我调用我的表:table1, table2, table3, table4等等…我正在寻找最快的方式在表2中执行快速搜索,与表1的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就会崩溃.....
您可以做几件事情来潜在地使它更快,尽管没有灵丹妙药。
-
如果你能把所有的表合并成一个有更多列的表,那么你就不需要循环两次了。
-
您可以根据ID对表进行索引。这将提高搜索性能。
-
更改表的块形状以更适合您的问题。