回覆列表
  • 1 # 年輕人的日常

    必須的。影響比較大,10萬不到的兩個表 left outer join 如果右表有null 還要group 之類 沒2 30秒 查不出來 常用的話, 建議做新表 外來鍵約束 或者過程儲存

  • 2 # 南極影解

    SQL連表查詢稱為聯合查詢,一個個表查詢是單查詢。聯合查詢優勢很明顯

    1、從開發效率來看:

    聯合查詢是需要多個單查詢進行邏輯組合才能完成的查詢的工作,聯合查詢僅僅需要一個SQL就可以完成查詢工作,即把業務邏輯放到了SQL中,由資料庫來處理,相對來說開發效率會比較高些。

    2、從查詢效率來看:

    單查詢的可重用性較高,所以效率相較之聯合查詢會更高。

    在資料庫進行讀寫時,資料庫會用鎖機制,限制其他連線對其操作。由於聯合查詢查詢速度比單個查詢要慢很多,這樣聯合查詢會增加鎖的競爭關係,所以用單查詢會更好。

    3、從邏輯架構分層原則來看

    關聯關係代表了業務規則/邏輯,如果大量使用關聯查詢,就是把大量的業務規則和邏輯放在資料庫來執行了,資料庫消耗cpu、記憶體、io等資源會大大增加。

    4、從資源利用率方面看

    大部分場景下,並不是所有關聯查詢的結果都被有效使用了。例如後臺管理的列表介面會分頁顯示,關聯查詢的結果集,只有當前頁的資料被使用,但資料庫需要消耗額外資源得到全部結果集。

    5、從架構的伸縮性方面看

    大量的關聯查詢會導致集中式的資料庫架構很難向分散式架構轉換,伸縮性方面的最佳化難度高。關聯查詢方便快速,開發效率比較好。

    不使用關聯查詢在架構層面有很多優點,但對系統分析和設計、開發能力要求高。一般在網際網路行業等使用者數較多的情況下最好重視這方面。

    題主的兩個查詢由於資料量不多,效率上基本沒有差別,但在實際應用中要根據資料量、業務複雜度等去綜合評估。

  • 3 # 修煉IT基本功

    不是絕對的,如果資料量不大,並且索引做的比較好的話問題不是很大,可以減少業務程式碼的量,但是在網際網路企業來說,大資料量多表關聯效能就會下降很多,就會出現慢查,甚至有時候沒有建立關聯欄位的索引,或者關聯欄位的值是null,那效能就會急劇下降,更加需要注意,所以有時候設計表的時候欄位可以適當冗餘,冗餘的時候不能過量冗餘,這樣更新的時候也會出現問題,最好在實際工作中不要出現三張表以上的關聯查詢,否則等資料量增長起來的時候,出現慢查,來重構程式碼的時候就會有各種麻煩

  • 中秋節和大豐收的關聯?
  • 想買一部2000左右的小屏手機,you安歇推薦?