喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: [问题] 表查询问题  
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[广告]: q m
表查询问题

昨天我可能没说的清楚
实在不好意思啊!
其实是这样的。
我要查的表 a 里面数据不多
要查的表 b 里面很多数据大概1000W条还要多
a 的 bid = b 的 id
我想把 a的bid 字段不属于b的id那些内容全部列出来!
但是一个很重要的就是 要效率
我试过

select * from a inner join b on a.bid<>b.id    这样的效率整个机都跨了


select * from a where not exists (select * from b where b.id=a.bid)   这样的效率还是不怎么样

3.用了临时表
insert into 临时表 select * from a inner join b on a.bid=b.id
然后在select * from a where not exists (select * from 临时表 where 临时表.id=a.id)
这样的效率还算一般!


请问高手有没更好的方法而且效率更高啊?最好是1条Sql语句 搞定
2007-4-24 11:45 AM#1
查看资料  Blog  发短消息  顶部
 
@
注册会员
Rank: 2



UID 90178
精华 0
积分 77
帖子 109
金钱 77 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-3-27
状态 离线
[推荐阅读] 99Click.com 诚聘软件工程师
首先要对b 的id 做索引。

第一种
select * from a where not exists (select id from b where b.id=a.bid)  ;

第二种
select * from a where not exists (
select A2.id  from (select B1.id from a A1,b B1 where A1.bid = B1.id) A2 where a.bid = A2.id
);

不论如何, 在b表建立id索引都很重要。
2007-4-24 11:53 AM#2
查看资料  发短消息  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] 无聊灌水--------------------------------------------------------------------
感谢楼主!
不过我后来写了条,感觉还行
可问题来了

select * from a not in (select * from a inner join b on a.bid=b.id)

这样查询很快!但是删除就不行了

delete from a not in (select * from a inner join b on a.bid=b.id)
2007-4-24 12:36 PM#3
查看资料  Blog  发短消息  顶部
 
安逸是魔鬼
新手上路
Rank: 1



UID 87833
精华 0
积分 4
帖子 4
金钱 4 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-1-29
来自 passka.com
状态 离线
[推荐阅读] 任何得到查询结果中一个表的信息?
SELECT * FROM a WHERE  bid  NOT IN (SELECT id FROM b);
删除同理




http://www.passka.com
2007-4-24 12:50 PM#4
查看资料  发短消息  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] 熟zen-cart的上海朋友请注意:兼职或赚外快的机会
楼主,你这样弄法我就不用发贴求助啦!
数据很大!
你的查询我至少得3分钟
2007-4-24 12:55 PM#5
查看资料  Blog  发短消息  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] 怎么将“;”替换为“;”并转到下一行?
问题全部解决!
感谢大家对问题的关注!
再会!
2007-4-24 02:16 PM#6
查看资料  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.022450 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP