2010-02-16 112 views
0

我是sql新手,所以我的術語可能不是很正確。從包含2億條記錄的表中選擇一些記錄

我有一個表對齊,它有2.5億條記錄。它有兩列chain_id1和chain_id2。其中一些鏈是來自另一個具有22000條記錄的表格Centroid的chain_id的外鍵。

基本上我需要所有那些有兩個鏈作爲質心的記錄。

我嘗試使用下面的查詢:

insert into NewAlignment(...) 
select .... 
from Alignment as A 
    , Centroid as C1 
    , Centroid as C2 
where (A.chain_id1 = C1.chain_id) 
    and (A.chain_id2 = C2.chain_id) 

但上面的查詢只攤位,是可以理解的看錶的大小。

因此,我試圖編寫一個腳本來掃描表格並檢查值,然後插入新表格。以這種方式爲100萬條記錄花了大約13分鐘。

有什麼辦法可以加快速度。

非常感謝。

+0

Centroid表包含多少個不同的chain_id值? – goat 2010-02-16 18:58:00

回答

1

您可能需要爲表格添加索引,特別是Alignment.Chain_id1,Alignment.Chain_id2Centroid.Chain_id。這應該會有很大的幫助。

+0

這三項都已經有了BTREE指標。 – amit 2010-02-16 17:32:17