join on关联表的数据很大或join on关联表好几个---这样会很慢~希望大家发表自己解决办法,帮帮小弟

解决方案 »

  1.   

    1#查询不要带 *
    2#SQL语句优化,加索引等
    3#有复合索引,where条件后按顺序写条件。
      

  2.   

    有的存储过程有限制条件,已经加上,还有别的进一步改进的吗?
    还有种条件:就是比如说主表是A表(Aid,Bid,Aname,)副表是B表(Bid,Bname,)
    首先根据 建临时表 检索B表select Bid,name from B where Bid in (select Bid from A where 输入的条件)
    select * from A left join 临时表 on Bid
    这样好像也慢,为什么慢不明白道理~?
    帮忙解释下,再说下好的办法!谢过!!!
      

  3.   

    #1. inner join
    #2. 字段加索引, where条件时要用到索引
    #3. 分页
      

  4.   

    要显示的最后以 Table.column 注明;
    记得在什么地方看到on的执行顺序早于where,于是推断能放在on后面的最后放在on后面
      

  5.   

    select Bid,name from B where Bid in (select Bid from A where 输入的条件)
    这个索引无效  可以考虑其他的方式
      

  6.   

    其实显示到页面的数据不是很多,原因是join的表太多,或者数据量太大
    造成检索的次数就N*M*J*K...次了
      

  7.   


    查询语句设计的数据量大,最好能不用in就不要用in。
      

  8.   

    #4楼.用IN的效率很低。建立临时表,还多了个把数据插入到临时表的过程。
    --select Bid,name from B where Bid in (select Bid from A where 输入的条件)
    --这样写
    select B.Bid, B.name from B, A where A条件 and A.Bid = B.Bid
      

  9.   

    有别的解决办法吗?
    不要临时表【建临时表 检索B表select Bid,name from B where Bid in (select Bid from A where 输入的条件)】直接select 。。 from A left join (写一个结果集?) on Bid=Bid
    这样可以吗?这办法没有用到in,这样可以吗?结果集怎么写呢?
      

  10.   

    left join 效率高很多  连接条件加索引
      

  11.   

    select B.Bid,B.name from B,A where B.Bid = A.Bid