作者carlcarl (carl)
看板Database
标题Re: [SQL ]请问子查询的效率
时间Wed Oct 17 22:59:00 2012
※ 引述《jimshih (传说中的果汁学长)》之铭言:
: 照推文的建议
: 如果改成
: insert into oocd_breast_cancer
: select oo.* from oo2002 oo, TEST
: where TEST.date between '20020101' and '20021231' and TEST.id =oo2002.id
: 这样会不会比较快呢?
: 还请原po试看看罗~
再帮忙补充一下 根据这篇答案给的建议
http://stackoverflow.com/questions/6135376
"Never use IN with a subquery; this is notoriously slow.
Only ever use IN with a fixed list of values."
我记得用in subquery的话 subquery会重复跑好几次(照理来说应该跑一次就好了..)
不过我不确定现在会不会对这个作optimize就是了
不确定的话可以用explain看看 (把insert into oocd_breast_cancer换成explain跑)
这篇query的效率应该比较好
索引的话 Test.date 和 oo2002.id 都建一下应该就OK
: ※ 引述《s9234140 (麻淑菸酒生)》之铭言:
: : 请问若我想新增多笔资料 子查询为有JOIN的动作
: : 但是动作过久 请问要怎麽血才能优化此查询 感谢
: : 语法如下
: : insert into oocd_breast_cancer select * from oo2002 where id in
: : ( select TEST.id from TEST, oo2002
: : where TEST.date
: : between 20020101 and 20021231 and TEST.id =oo2002.id)
--
http://blog.carlcarl.tw
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.242.1.198