有个很难的问题,就是select * from a left join b on a.aid=b.bid order by a.ss就很快
但是select * from a left join b on a.aid=b.bid order by b.cc就很慢,都建立的索引,为什么这样?20万条数据!

解决方案 »

  1.   

    a.ss 是什么类型的字段
    b.cc 是什么类型的字段如果差异不大,order by 都是在查询结果中计算的
      

  2.   

    我也用過right join,但是顯示的數據很多都是多餘的,inner join 比left join還要慢
      

  3.   

    补充一下,a.ss和b.cc 是varchar字段的,有索引的
      

  4.   

    看一下执行计划。你用的是什么数据库? ACCESS ? SQL SERVE的? ORACLE ? MYSQL ? 没猜出来。
      

  5.   

    连接问题,你换个right join保证一样快了
      

  6.   

    select * from[color=#FF0000] b right join a on a.aid=b.bid order by b.cc[/color]
    这样试试
      

  7.   

    select * from b right join a on b.bid=a.aid order by b.cc
      

  8.   


    csdn的编辑器真是强大,,,
      

  9.   

    a表
    azhuid aid ss pass date
    b表
    bid cc color
      

  10.   

    你需要的结果?大部分情况下inner join, left join, right join的结果都是不一样的,
    不是可以随便互换的....
      

  11.   

    我想的結果是,order by 所有有索引的字段,都快,问题是left join b表后 order by b表的索引字段然后分页显示,会慢上几秒,order by a表的索引字段不用一秒就可以分页出来select * from a left join b on a.aid=b.bid order by b.cc limit $start,$len
      

  12.   

    当使用left join时, 左边为实表,而右边为虚表,根据实表索引查,故速度快,考虑这种情况,
    当使用inner join时,都为实表,速度差不多!