作者zacaria (zacaria)
看板Database
標題[SQL ] 多項條件篩選
時間Tue Jul 20 13:32:13 2010
我用的軟體是SAS 其中SQL語法與SQL SERVER 相似
想請問這樣的問題要怎樣去寫程式執行時比較快
假設有兩個表A、B
A中有欄位
a1、a2、a3、a4、a5、a6、
a7、a8、a9、a10、...、a20 共20欄
B中有欄位
a1、a2、a3、a4、a5、a6、
b1、b2、b3、b4、...、b18 共24欄
現在想作表C
條件為 A.a1=B.a1
A.a2=B.a2
A.a3=B.a3
A.a4=B.a4
A.a5=B.a5
A.a6=B.a6
即C表有欄位
a1、a2、a3、a4、a5、a6 (from 條件)
a7、a8、a9、a10、...、a20 (符合條件、from 表A)
共20欄
我的作法如下:
proc sql;
create table C as
select * from A where exists
(select * from B where
A.a1=B.a1
and A.a2=B.a2
and A.a3=B.a3
and A.a4=B.a4
and A.a5=B.a5
and A.a6=B.a6);
quit;
因為資料量很大
都要跑超過10小時,十分的耗時
想請問有沒有更好的寫法
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.14.83.28
※ 編輯: zacaria 來自: 163.14.83.28 (07/20 13:32)
1F:推 evernever:不熟SAS,但直覺是用 View, 還有你的語法好像沒有到38欄 07/20 14:03
※ 編輯: zacaria 來自: 163.14.83.28 (07/20 15:11)
謝謝提醒 我的問題敘述錯了 已改正
※ 編輯: zacaria 來自: 163.14.83.28 (07/20 15:12)
2F:→ tw70126:可以用inner join 吧 = = 07/21 20:59
3F:→ grence:如果 tableB的欄位沒有用到,這種寫法有可能比 join快 07/21 23:05