- 開源地址:
- github: https://github.com/sagframe/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
- idea 插件(可直接在idea中檢索安裝): https://github.com/threefish/sqltoy-idea-plugins
- 更新內容
1、在findEntity中EntityQuery可以設置fetchSize,在sqltoyContext中可以全局設置fetchSize,實現查詢數據提取的性能
2、針對一些特殊原因導致表名是數據庫關鍵詞場景的兼容
- ORM的最佳形態:類JPA對象式操作+超強查詢
- jpa對象式操作:dao.save(entity)/saveAll(List<Entity>)/update(entity)/load(new Entity(id)) 模式,簡單直接,對此大家基本能形成共識,也是各種ORM差異最小的。sqltoy在這個方面相信是對等的,因為是共識理論上來說不必要每次都提及!
2. 超強查詢:最理想的狀態就是:第一在數據庫客戶端調試好的sql 最直觀高效地移入項目工程中;第二、在需求變化時最簡單快速的可以從工程中放入數據庫客戶端中進行調試。也就是說要最大限度地保持sql的原始面貌;
最合理的sql編寫模式
MyBatis 的sql如何高效維護?
- 用ORM我們真真正正的痛點是什么?
1、sql的編寫和后期維護,上面的圖例已經說明問題。
2、執行效率:當同樣功能效率有幾倍差距時其實就是天壤之別了,帶來的直接效果就是:一邊是用戶的高度夸贊、一邊是用戶的鄙視,您能理解這是什么差距嗎?
- sqltoy的緩存翻譯,大幅減少表關聯簡化sql,讓你的查詢性能成幾何級提升
緩存翻譯減少關聯查詢
- 極致的分頁,同樣幫助你實現查詢的性能大幅提升
- 快速分頁:@fast() 實現先取單頁數據然后再關聯查詢,極大提升速度
- 分頁優化器:page-optimize 讓分頁查詢由兩次變成1.3~1.5次(用緩存實現相同查詢條件的總記錄數量在一定周期內無需重復查詢
- sqltoy的分頁取總記錄的過程不是簡單的select count(1) from (原始sql);而是智能判斷是否變成:select count(1) from 'from后語句', 并自動剔除最外層的order by
- sqltoy支持并行查詢:parallel="true",同時查詢總記錄數和單頁數據,大幅提升性能
- 在極特殊情況下sqltoy分頁考慮是最優化的,如:with t1 as (),t2 as @fast(select * from table1) select * from xxx 這種復雜查詢的分頁的處理,sqltoy的count查詢會是:with t1 as () select count(1) from table1, 如果是:with t1 as @fast(select * from table1) select * from t1 ,count sql 就是:select count(1) from table1
最極致的分頁
- 做過統計分析的您,害怕數據旋轉嗎?害怕同比環比嗎?
- 無限極分組統計(含匯總求平均),算法配置簡單又跨數據庫!
- 同比環比
- sqltoy還有什么?
因為篇幅原因,這里不過多展開,我相信您想要的,在sqltoy中基本都可以找到滿意的答案!比如:分庫分表、樹形數據處理、sql跨數據庫等等!
- 致謝
感謝廣大網友的支持,提出寶貴的反饋意見,sqltoy的一步步的成熟是大家獨到的眼光和敢于試錯的精神加入到sqltoy這個還處于發展中的框架用戶群體中來!也祝愿sqltoy可以幫助到大家,愿大家可以工作生活平衡!