怎样提高效率

good_0725 2012-09-20 02:47:50
select TCAA.account from TCAA where TCAA.account not in(
select account from abc_temp
)

怎么才能提高这句查询语句的速度
TCAA有9万多条记录,abc_temp有8000多条
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a494910091 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
用exists 比用in 快
[/Quote] 谁说的?并不是所有的 exists 代替 in都快些。
楼主的这个用 not exists 要快些,像2楼说的

SELECT TCAA.ACCOUNT
FROM TCAA
WHERE NOT EXISTS
(SELECT NULL FROM ABC_TEMP B WHERE TCAA.ACCOUNT = B.ACCOUNT)

再到 TCAA 表的 account 、ABC_TEMP的account 上加上索引就差不多了。
ssqtjffcu 2012-09-20
  • 打赏
  • 举报
回复

select TCAA.account from TCAA
minus
select account from abc_temp
panda熊 2012-09-20
  • 打赏
  • 举报
回复
楼主可以去网上找些数据库优化的资料看看,对应的查询优化
DXX627YERUI 2012-09-20
  • 打赏
  • 举报
回复
用exists 比用in 快
kingstarer 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
select TCAA.account from TCAA where TCAA.account not in(
select account from abc_temp
)

怎么才能提高这句查询语句的速度
TCAA有9万多条记录,abc_temp有8000多条
[/Quote]
试试给表abc_temp加上索引
fw0124 2012-09-20
  • 打赏
  • 举报
回复
select TCAA.account from TCAA where not exists(
select 1 from abc_temp where abc_temp.account=TCAA.account));
Kobayashi 2012-09-20
  • 打赏
  • 举报
回复
select t from( select tcaa.account t,acb_temp.account a from tcaa left join abc_temp on tcaa.account = abc_temp.account) s where a is null

试下这个方法。。肯定比你的要快。。。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧