[size=18px][size=16px]现在我假设有三个表,数据很多,有两种方法查询
 SELECT r.system_product_id,r.sales_price,s.supplier_product_id,t.image_big_url from r 
 INNER JOIN s on r.system_product_id=s.system_product_sid
INNER JOIN  t on t.supplier_product_id=s.supplier_product_id GROUP BY s.supplier_product_id limit(0,20);第二种是:用一个inner join s,不用inner join t,然后使用一个循环,对t表查找20次,哪种方法性能会更好呢?请朋友们分析下?

解决方案 »

  1.   

     INNER JOIN 是内链接,凡不符合连接条件的记录不会出现在结果集中
    所以两个  INNER JOIN 得到的结果集,至多和一个  INNER JOIN 的规模一样你的第二个方案,需要多次操作数据库,程序结构复杂,还会因数据库繁忙失败
    还可能要做无用功
      

  2.   

    数据关系逻辑比较复杂的时候还是直接使用原生SQL替代ORM框架比较好,ORM在业务性比较强的地方可以提高效率,但是性能代价还是要考虑的
      

  3.   

    表链接是关系型数据库的基本特征ORM 同样也提供有 join 方法
      

  4.   

    我的意思是用ORM在内存当中多次请求数据。ORM写比较复杂的SQL数据关系的话反而更加坑爹个人认为
      

  5.   

    ORM 一般都提供有 join 和 relation 两个方法,用于不同的场合
    join 很容易理解,就是平面化数据
    而 relation 是立体化数据,如果你需要获取树形数据时可以用它