回覆列表
  • 1 # 使用者992003956934

    1.首先是最佳化,在絕大多數的場景下,多表查詢的都是可以被單表聯查替換掉,只有少數諸如資料查詢這樣的場景下多表查詢才是必要的,而在其他場景下,你只是需要幾條資料做關聯,使用全表之間關聯就顯得浪費了.

    2. 解耦合,使用單表查詢後,更有利於解耦合,尤其是在現在orm橫行的情況下,你是不知道你的聯查orm給你搞成了什麼樣,你是很難直接最佳化,尤其是在龐大資料下,超過三個表以上的關聯下,你的sql效率就變得低效,只有考慮新增索引之類的最佳化方式.而這個是需要dba的支援.

    3.從2引申出來,那就是負載的問題,一旦引入複製,分表分庫後,你的的多表聯查就成為橫向分割最大的負擔.這些東西需要手工去寫複雜的關聯器.而採用單表分查的,拆分則容易的多.

  • 2 # 未來可期_487

    樓主使用的是子查詢,子查詢侷限性較大,只能顯示第一張表的欄位。你可以這樣寫

    SELECT * FROM biz.coursecomment a,so.sodetail b,so.somaster c

    where a.sono=b.sono and b.sono=c.sono and c.TeacherNO="100199" and b.IsStudentComment="1" AND IsTeacherComment="1" and a.ToCustomerNO="100199"

    這樣寫就避免了各種的子查詢。當然,你還可以寫成join的形式。join的層次更分明,程式碼如下:

    SELECT * FROM biz.coursecomment a

    join so.sodetail b

    on a.sono=b.sono

    join so.somaster c

    on c.sono=b.sono

    where c.TeacherNO="100199" and b.IsStudentComment="1" AND IsTeacherComment="1" and a.ToCustomerNO="100199"

    如果不懂,可以追問

  • 中秋節和大豐收的關聯?
  • 《詩經》中的“風”“雅”“頌”是什麼意思?