優先使用單表查詢,而非聯合查詢
阿新 • • 發佈:2017-06-02
gda 優先 下大雨 crud 架構 關聯查詢 鏈式操作 column 一個
1.編碼規範 CRUD,命名規範,可以通用。
比如類名、方法名、變量名,都很接近。 2.開發效率 復制粘貼很方便。 自動化生成很爽。 標準API容易定義。
針對單表的鏈式操作框架,也很多。
3.代碼簡單易懂 一個表,再復雜的sql,很快也能看懂。 一般的sql,剛剛畢業的大學生,也看得懂,寫得出來。
<select id="get" resultType="cn.fansunion.shopping.Order"> select <include refid="columns" /> from order_order where id = #{id} </select>
4.分庫分表 數據量大了之後,分庫分表,sql基本不受影響。 話說當當開源的sharding-jdbc,不支持聯合查詢吧。 https://github.com/dangdangdotcom/sharding-jdbc
5.可擴展強 持久層API,職責單一,很容易重新組合。
6.緩存 單表查詢的數據比較明確,緩沖命中率高。 如果是多表查詢,其中1個表變了,另外1個表沒變,還需要重新查詢。 二、海爾電商總監-Richie
簡單說說
1. 從邏輯架構分層原則來看
關聯關系代表了業務規則/邏輯,毫無約束大量使用關聯查詢,就是把大量的業務規則和邏輯放在數據庫來執行了,數據庫消耗cpu、內存、io等資源進行關聯操作,實際上是在做應用該做的事情。
2. 從資源利用率方面看 大部分場景下,並不是所有關聯查詢的結果都被有效使用了。例如後臺管理的列表界面,通常都會分頁顯示,關聯查詢的結果集,只有當前頁的數據被使用,其他都是無用的,但數據庫需要消耗額外資源得到全部結果集,再從中得到當前頁數據。
3. 從架構的伸縮性方面看 大量的關聯查詢會導致集中式的數據庫架構很難向分布式架構轉換,伸縮性方面的優化難度高。 關聯查詢方便快速,開發效率比較好,如果系統、數據庫經過一些垂直優化手段完全能夠滿足性能要求是可以使用的,例如中小企業的內部管理系統等。 不使用關聯查詢在架構層面有很多優點,但對系統分析和設計、開發能力要求高。一般在互聯網行業等用戶數較多的情況下最好重視這方面。 理論上不存在什麽復雜場景,如果不使用數據庫的關聯查詢就無法滿足需求的。巨無霸的ERP系統SAP,基本整個系統功能都是用單表查詢實現的
https://www.zhihu.com/question/21319692/answer/35443564
三、《高性能MySQL》-權威解讀
https://www.zhihu.com/question/21657443 小雷FansUnion-一個有創業和投資經驗的資深程序員-全球最大中文IT社區CSDN知名博主-排名第122
博客:http://blog.csdn.net/fansunion
2016年7月4日:今天又在下大雨
湖北-武漢:長江告急!水勢兇猛啊!
優先使用單表查詢,而非聯合查詢
發表於2016/7/4 17:49:09 1866人閱讀
分類: 研發架構
一、小雷的見解1.編碼規範 CRUD,命名規範,可以通用。
比如類名、方法名、變量名,都很接近。 2.開發效率 復制粘貼很方便。 自動化生成很爽。 標準API容易定義。
針對單表的鏈式操作框架,也很多。
3.代碼簡單易懂 一個表,再復雜的sql,很快也能看懂。 一般的sql,剛剛畢業的大學生,也看得懂,寫得出來。
<select id="get" resultType="cn.fansunion.shopping.Order"> select <include refid="columns" /> from order_order where id = #{id} </select>
4.分庫分表 數據量大了之後,分庫分表,sql基本不受影響。 話說當當開源的sharding-jdbc,不支持聯合查詢吧。 https://github.com/dangdangdotcom/sharding-jdbc
5.可擴展強 持久層API,職責單一,很容易重新組合。
6.緩存 單表查詢的數據比較明確,緩沖命中率高。 如果是多表查詢,其中1個表變了,另外1個表沒變,還需要重新查詢。 二、海爾電商總監-Richie
2. 從資源利用率方面看 大部分場景下,並不是所有關聯查詢的結果都被有效使用了。例如後臺管理的列表界面,通常都會分頁顯示,關聯查詢的結果集,只有當前頁的數據被使用,其他都是無用的,但數據庫需要消耗額外資源得到全部結果集,再從中得到當前頁數據。
3. 從架構的伸縮性方面看 大量的關聯查詢會導致集中式的數據庫架構很難向分布式架構轉換,伸縮性方面的優化難度高。 關聯查詢方便快速,開發效率比較好,如果系統、數據庫經過一些垂直優化手段完全能夠滿足性能要求是可以使用的,例如中小企業的內部管理系統等。 不使用關聯查詢在架構層面有很多優點,但對系統分析和設計、開發能力要求高。一般在互聯網行業等用戶數較多的情況下最好重視這方面。 理論上不存在什麽復雜場景,如果不使用數據庫的關聯查詢就無法滿足需求的。巨無霸的ERP系統SAP,基本整個系統功能都是用單表查詢實現的
三、《高性能MySQL》-權威解讀
https://www.zhihu.com/question/21657443 小雷FansUnion-一個有創業和投資經驗的資深程序員-全球最大中文IT社區CSDN知名博主-排名第122
博客:http://blog.csdn.net/fansunion
2016年7月4日:今天又在下大雨
湖北-武漢:長江告急!水勢兇猛啊!
優先使用單表查詢,而非聯合查詢