求一条sql语句,需要效率
以下字段全为varchar 
 Table   A   (bid,cid必有一个为空) 
 ------------------------ 
 time       
 bid             
 cid     
 Table   B 
 ------------------------ 
 bid 
 bname 
 type     
 Table   C 
 ---------------- 
 cid 
 cname 
 type     
 Table   type 
 --------------------- 
 type 
 name1 
 name2   
 需要得到这样的结果 
 time            bid            bname            cid            cname 
 但是需要对name1和name2加限制   
 我是这样做的 
 select   a.time,   a.bid,   b.name,   a.cid,   c.name    
 from   A   a,   B   b,   C   c,   Type,   t 
 where   a.bid   =   b.id    
             and   a.cid   =   c.id    
             and   (b.type   =   t.type   or   (a.bid= ' '   and   c.type   =   t.type)) 
 可是这条sql在10万条记录的A表上(我还有几个表连接(这几个连接同A与B之间关系相同,应该不是它们的问题),居然执行了150多秒 
 请高手指点
------解决方案--------------------不知道为什么所有的字段都要 varchar ,为什么不使用 int 或者 char? 
------解决方案--------------------1.有索引就一定要用索引(注意顺序) 
 2.注意关联的顺序 
 select a.time, from A a, B b where a.bid = b.id  
 和 
 select a.time, from A a, B b where b.bid = a.id  
 的效率是不一样的. 
 尤其是当A,B表大小相差很大时. 
 一般是小表放在 "= "右侧
------解决方案--------------------hehe ,不知道最后执行的时间是? 
 如果有主键,mysql会自动去取主键的,这个比索引的效率要好。 
 否则,就去取索引,如果都没有,那么mysql只有执行最傻的操作了:全表搜索。   
 取主键和索引都可以直接定位,但是主键更快一些。这么说,楼主明白了吗?
------解决方案--------------------学习了