java工程最佳化——ORM架構查詢最佳化原理

來源:互聯網
上載者:User

標籤:java   jpql   最佳化   

        眾所周知,當下的流行的企業級架構中,ORM一直是最基礎的部分,在架構設計的底層,對邏輯層提供物件導向的操作支援,而事實總是和我們預想的有所偏差,ORM在提供了較好的操作體驗時,也流失了一部分原生SQL的靈活性與高效性,當然,這個問題不影響我們使用ORM架構,但是卻阻礙了我們網站流量的提升,尤其是在企業級的多關係複雜查詢方面,效能瓶頸是不得不提的部分!

        針對此問題,大多數的ORM架構提供一個折中的解決方案,就是在查詢語句中,構造一個對象,可以是一個Entity,也可以是Map等,這樣的方案,很大程度上解決了級聯查詢的問題,今天,我們一起來揭開這層面紗,看看這裡的最佳化,是如何做到的!

現象:        

先看看我們的實驗中用到的幾個實體



大家可以看到中間的學生實體,和其他的實體關聯太多,如果我們使用一般的查詢語句會變得非常緩慢,我們測試在查詢10條記錄,不開啟懶載入的前提下,10分鐘這些資料都不能載入,大家看看記錄檔,發的sql語句:

原因

查詢語句:

From Student  where isDlete=0 

記錄檔:


        這隻是一小部分,我們做的統計是,發出了241條查詢語句,這樣的結果是客戶不能容忍的,通過研究,我們發現直接發 from 雖然可以返回對象,但是嚴重拖慢查詢效率,在from前加select語句,就會好很多,因為加上select後,就會組合成join語句,最後只發一天sql語句,對效率的提升是明顯的!

總結:

        一個問題的解決方案,有時候會非常簡單,而又對自己當初的設計懊悔不已,其實這都是一個過程,一個財富,我們遇到的每一個問題,都是為了讓我們在以後的設計中有更好的想法,當然更重要的一點就是那別人撞的頭破血流的經驗作為自己的經驗,提升自己的能力,這也是企業喜歡見到的!

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

java工程最佳化——ORM架構查詢最佳化原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.