首页 新闻 搜索 专区 学院

一个查询性能的问题

0
悬赏园豆:10 [待解决问题]

有一个查询
select * from A where aid in (select aid from b where uid=1)
但是现在b表的数据我根据uid做了缓存也就是说
这个查询我可以修改为
select * from A where aid in (1,2,3,4,5,6,7)

理论上来减少了一个表的扫描,性能应该是提升了,但是当生成的sql语句很长之后(也就是uid=1的记录比较多)查询时间反而加大了?不明白为什么会这样

马陈灵的主页 马陈灵 | 初学一级 | 园豆:12
提问于:2011-02-10 17:51
< >
分享
所有回答(3)
0

in 可以使用exists 、join替代优化查询

Kabayashi | 园豆:128 (初学一级) | 2011-02-10 23:41
0

使用联表查询试试看(不用子查询的方式),另外如果A表的字段不多的话就不要用*了,字段都列出来查,应该也能快一点吧

死神的背影 | 园豆:660 (小虾三级) | 2011-02-11 08:55
0

你轻视了DBMS,就这样.

【秦时明月】 | 园豆:845 (小虾三级) | 2011-09-28 15:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册