1. 程式人生 > >Mysql為什麽不建議使用join

Mysql為什麽不建議使用join

服務器 一個數 單表 targe 單表查詢 實現 log 不同的 什麽

首先,你需要知道join的語法:Mysql Join語法解析與性能分析

事實上,用分解關聯查詢的方式重構查詢有如下的優勢:

  • 讓緩存的效率更高。許多應用程序可以方便地緩存單表查詢對應的結果對象。如果關聯中的某個表發生了變化,那麽就無法使用查詢緩存了,而拆分後,如果某個表很少改變,那麽基於該表的查詢就可以重復利用查詢緩存結果了。

  • 將查詢分解後,執行單個查詢可以減少鎖的競爭。

  • 在應用層做關聯,可以更容易對數據庫進行拆分,更容易做到高性能和可擴展。

  • 查詢本身效率也可能會有所提升。查詢id集的時候,使用IN()代替關聯查詢,可以讓MySQL按照ID順序進行查詢,這可能比隨機的關聯要更高效。

  • 可以減少冗余記錄的查詢。在應用層做關聯查詢,意味著對於某條記錄應用只需要查詢一次,而在數據庫中做關聯查詢,則可能需要重復地訪問一部分數據。從這點看,這樣的重構還可能會減少網絡和內存的消艷。

  • 更進一步,這樣做相當於在應用中實現了哈希關聯,而不是使用MySQL的嵌套循環關聯。某些場景哈希關聯的效率要高很多。

在很多場景下,通過重構查詢將關聯放到應用程序中將會更加高效,這樣的場景有很多,比如:當應用能夠方便地緩存單個查詢的結果的時候、當可以將數據分布到不同的MySQL服務器上的時候、當能夠使用IN()的方式代替關聯查詢的時候、當查詢中使用同一個數據表的時候。

Mysql為什麽不建議使用join