具体的sql列出来, 表结构列出来, 索引列出来, 要不然大家只能瞎猜我猜还是left join好

解决方案 »

  1.   

    呵呵,我们公司禁止使用LEFT JOIN,而强迫使用IN (),说是能提高效率。还真没测试过
      

  2.   

    小测了一下:<?php
    for($c=0; $c<10000; $c++) $UID[]=rand(0, 744462416); //本来写的100万,结果Allowed memory size of ...
    $UID = join(",", $UID);//方法一:
    $t = mysql_query("SELECT school_id FROM users WHERE id IN ($UID)");
    while($r = mysql_fetch_array($t)) $SID[]=$r['school_id'];
    $SID = join(",", $SID);
    $r = mysql_query("SELECT name FROM school WHERE id IN ($SID)");//方法二:
    $r = mysql_query("SELECT s.name
                        FROM users AS u,
                             school AS s
                       WHERE u.id IN ($UID)
                          && u.school_id = s.id");
    ?>耗时:
    0.295159
    0.025118
      

  3.   

    left join有时还是非用不可啊
      

  4.   

    explain 一下具体的SQL语句。
      

  5.   

    觉得偶尔可以替换LEFT JOIN 和RIGHT JOIN。表的顺序不变。效率不一样的。
      

  6.   

    学习 left join后还不是要个in 难道=?
      

  7.   

    explain 看一下,具体情况不一样。
    left join也要看你用没有用到索引