我写了条left join语句 执行速度很慢,他的执行原理是什么?有什么优化的方法吗?
还有inner join 是什么意思?执行速度很快嘛?

解决方案 »

  1.   

    left join 左连接  如果是单纯两表left join的话,这种在结构上一般不优化 主要是看看索引了 速度慢说明你表很大嘛
    select * from tablea a inner join tableb b on a.id=b.aid 就相当于 select * from tablea a,tableb b where a.id=b.aid 
      

  2.   

    比如 select A.*,B.* from A left join B on b.aid = a.id数据库先取得 A表全部数据,再根据 b.aid = a.id 取得 b表相关数据
    然后拼接组装出 A.*,B.*的合成数据并返回个人认为left join 写的好的话并不会特别慢。即不要在left join 中用大量复杂的关联子查询
    比如:
    select A.*,t.* from A 
    left join (
       select B.* from B
    ) t on t.aid = a.id 
    这样的话,必然里面是一个全表的数据返回,就很影响效率了
      

  3.   


    select * from tablea a inner join tableb b on a.id=b.aid 就相当于 select * from tablea a,tableb b where a.id=b.aid
    这两个有什么区别没有,执行速度怎样?
      

  4.   

    没什么区别,写法不一样,后者更利于扩展和移植,因为有的数据库是不支持inner join的
    前者好比是英语,后者好比是中国语
    英语就适合全世界,中国语适合全宇宙
      

  5.   

    我写的sql是必须要在left join中用大量的关联子查询的,有没有什么优化的方法
      

  6.   


    没有特别好的办法,如果实在要用的话,就要尽量想办法缩小子查询的数据集,多加where条件
      

  7.   

    left join 想要加速就同时减少join2边的表结果集,实现原理自己百度去.
    一般速度慢多半是索引无法使用.
      

  8.   

    left join 你任意一边结果集很大一样会慢.
      

  9.   

    问数据库问题,在问问题之前请:1:列出所使用的 DBMS
    2:列出所有相关表的表结构
    3:列出所有相关表的索引
    4:列出所有相关表大致的数据行数
    5:列出需要提问的 SQL 语句如果做不到的话,我敢保证你得不到满意的答复。