in有其他的操作可以替代吗?效率太低了.

bluesun 2007-03-08 10:57:06
in有其他的操作可以替代吗?效率太低了.
select * from table1 where id in (select id from table2)
如上面这句,特别在表大的时候速度相当的慢.
...全文
335 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kafuwei 2007-03-08
  • 打赏
  • 举报
回复
你的查询语句没问题的,如果要优化的话,你优化你的数据库索引,建议对table1的id和table2的id各建立一个独立的索引,对速度是有优化的。
rookie_one 2007-03-08
  • 打赏
  • 举报
回复
这种情况right join可能也行
select a.*
from table1 a right join table2 b
on a.id=b.id
wangdehao 2007-03-08
  • 打赏
  • 举报
回复
select a.* from table1 a
inner join table2 b
on a.id=b.id
Dhammacakkhu 2007-03-08
  • 打赏
  • 举报
回复
mark
Csps_Bigben 2007-03-08
  • 打赏
  • 举报
回复
尽量使用JOIN 表,能用的尽量用,万一不行用EXIST,使用IN确实效率低!
中国风 2007-03-08
  • 打赏
  • 举报
回复
select * from table1 where exists (select 1 from table2 where id=table1.id)
proer9988 2007-03-08
  • 打赏
  • 举报
回复
理论上讲用IN是快的,但是实际上微软针对inner join做了优化!
bluesun 2007-03-08
  • 打赏
  • 举报
回复
确实速度提高了很多,用join只要1/8的时间.

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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