2014-05-02 29 views
1

我該如何以最快的方式做到這一點?從pytables中的多個表中選擇數據

我有一個表格.h5文件。表格每個都有10萬(或更多)行。

整個文件的大小約爲10GB,(文件沒有裝入內存)

中的表「鏈接」,這意味着,他們都具有相同的列(ID),作爲列鏈接它們之間。

現在,如果我打電話給我的表:table1,table2 table3 table4等...我正在尋找最快的方式執行表2中的快速搜索,whith從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

有幾件事情,你可以做,有可能使這個更快,雖然沒有銀彈。

  1. 如果你可以將所有的表格合併到一個表格中,那麼你將不必循環兩次。

  2. 您可以基於ID對錶格編制索引。這會提高搜索性能。

  3. 更改表格的chunkshape使其更適合您的問題。如果你把它做得更小,那麼這應該有助於崩潰。

+0

感謝您的提示安東尼,現在我只需要做一些性能測試 – codeKiller