• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

select id from A where id in (select id from B) 怎样提高执行速度?

chenam 2008-11-10 02:46:07
mysql 语句
select id from A where id in (select id from B)
A,B 表很大时,上万记录,速度会很慢,怎样提高执行速度....
...全文
105 点赞 收藏 14
写回复
14 条回复
dobear_0922 2008年11月10日
SELECT a.* FROM ta a
INNER JOIN
(SELECT id FROM tb group by id) b
ON a.id=b.id
回复 点赞
ChinaJiaBing 2008年11月10日

select id from a where exists(select 1 from b where a.id=b.id)
回复 点赞
Liyingyue_FFS 2008年11月10日
主要还是对A B表的ID加索引
回复 点赞
幸运的意外 2008年11月10日
给B表加个索引,并且尽量限制子查询的结果集.
回复 点赞
水族杰纶 2008年11月10日
[Quote=引用 8 楼 chenam 的回复:]
你们用的是join
和我上面的应该不一样的吧.
A表中id是主键,B表中有id,xyrid ,id 是主键

select id from A where id in (select xyrid from B)
[/Quote]
select id from A where id in (select id from B) 
--> 變成下面怎麼不一樣了?
select id from A
inner join (select distinct id from B) t
on A.id=t.id

select id from A where id in (select xyrid from B)
-->
select id from A
inner join (select distinct xyrid from B) t
on A.id=t.id
回复 点赞
mustudent 2008年11月10日
聽說Exists比in的效率高
回复 点赞
chenam 2008年11月10日
你们用的是join
和我上面的应该不一样的吧.
A表中id是主键,B表中有id,xyrid ,id 是主键

select id from A where id in (select xyrid from B)
回复 点赞
fcuandy 2008年11月10日
SELECT a.* FROM ta a
INNER JOIN
(SELECT DISTINCT id FROM tb) b
ON a.id=b.id
回复 点赞
csdyyr 2008年11月10日

--在id上建立索引
select a.id from a join b on a.id=b.id
回复 点赞
hyde100 2008年11月10日
--id上建立索引
select
*
from A
inner join B on A.id=B.id
回复 点赞
水族杰纶 2008年11月10日
create index index_name on a(id)
create index index_name on b(id)
select id from A
inner join (select distinct id from B) t
on A.id=t.id
回复 点赞
等不到来世 2008年11月10日

--A,B表分别在id上建立索引

select id from A
join (select distinct id from B) t
on A.id=t.id
回复 点赞
-晴天 2008年11月10日
select t1.id from A t1 inner join b t2 on t1.id=t2.id
回复 点赞
liujuns 2008年11月10日
select *
from A a join B b on a.id =b.id
where b.id =??

在Id上建立索引
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告