本帖最后由 z3453876 于 2014-05-06 01:09:47 编辑

解决方案 »

  1.   

    如果没有任何条件的话,加不加外键没区别,就是同一个表扫三遍然后JOIN。
    如果有A.ID=XXX的话,因为ID是主键,所以A上走索引查找,然后两个索引查找找到B和C,也没外键什么事。外键最大的用处是级联更新删除之类的,查找效率在你这个案例上真看不出有什么用。
      

  2.   

    你这三个ID都是同一张表,建议你使用 两个 left join ,自己创建自己这个说法不大通。
      

  3.   

    还有一种方式,是可以在你的表中可以适当的增加一些冗余。
    ID、Name、CreateBy、CreateByName,UpdateBy,UpdateByName。
    如果你上面的查询经常使用的话,效率还是会有影响,但是适当的增加冗余的话,就能节省这方面的开销,就是平常维护的时候稍微麻烦写。这个需要有一个取舍
      

  4.   

    这个没什么不对的啊 也没感觉出有什么要优化的 改成left join更好点