日期:2014-05-17  浏览次数:20794 次

新手,数据库基础问题
a表年级表 aid ,anmae;
b表学生表 bid,bname,aid,bage //bname中不可能出现重复,但是没做唯一索引。
A、select b.* from b where bname='bname';//只是在1000万中找一名学生。
B、select b.* from b ,a  where b.aid = a.aid and a.aid=1 and   b.bname ='bname';//查找1年级的bname 
C、select b.* from b where aid in(select aid from a where aid = 1) and bname = 'bnmae';//查找1年级的bname
abc3条语句的效率问题,那个更快一点。
------解决方案--------------------
引用:
a表年级表 aid ,anmae;
b表学生表 bid,bname,aid,bage //bname中不可能出现重复,但是没做唯一索引。
A、select b.* from b where bname='bname';//只是在1000万中找一名学生。
B、select b.* from b ,a  where b.aid = a.aid and a.aid=1 and   b.bname ='bname';//查找1年级的bname 
C、select b.* from b where aid in(select aid from a where aid = 1) and bname = 'bnmae';//查找1年级的bname
abc3条语句的效率问题,那个更快一点。

都没有索引及主键的情况下,a应该会最快吧。
如果就是想查一个学生,就用a就行了,最好加上索引。。
------解决方案--------------------
b.bname上都没索引,三条语句中都有 b.bname ='bname' 条件,bc两条语句又需要处理连接和子查询效率应该没a快吧。
------解决方案--------------------
没有做过测试,感觉是a,理由是没有索引,a是遍历一边,而b,c至少先便利一边b.name,然后在遍历其他条件,所以我选a