多表條件查詢的效能優化
sql1: select b.*,a.* from a,b where a.alt = b.alt and a.materialbill = b.mat and a.mtl = 'b01ae50131b3000ae'
sql2: select b.*,a.* from a,(select alt,mat from b where mtlno = 'b01') b where a.alt = b.alt and a.mat = b.mat
大家寫多表查詢的時候可能經常會寫成sql1的語句,雖然sql1和sql2所完成的結果是一致的不過效率上來講sql2更高效。
下面是筆者對於sql1,和sql2執行效率的對比(在同環境中的100次執行 80%以上的情況下 sql1的執行時間是大於sql2的)
程式執行時間 sql1: 60642295ns
程式執行時間 sql2: 38701910ns
程式執行時間 sql1: 48397951ns
程式執行時間 sql2: 46428006ns
程式執行時間 sql1: 46488642ns
程式執行時間 sql2: 31040653ns
程式執行時間 sql1: 35065875ns
程式執行時間 sql2: 31788246ns
程式執行時間 sql1: 35922433ns
程式執行時間 sql2: 31519137ns
程式執行時間 sql1: 34986580ns
程式執行時間 sql2: 32410407ns
程式執行時間 sql1: 35279593ns
程式執行時間 sql2: 31643322ns
程式執行時間 sql1: 33958278ns
程式執行時間 sql2: 31290219ns
程式執行時間 sql1: 34027940ns
程式執行時間 sql2: 31123665ns
程式執行時間 sql1: 34309302ns
程式執行時間 sql2: 31402426ns
程式執行時間 sql1: 34546235ns
程式執行時間 sql2: 31409009ns
程式執行時間 sql1: 34160856ns
程式執行時間 sql2: 31276024ns
通過上面的結果可以看出sql2的執行效率更高效,當然如果只是有限的資料量這種效能可以忽略
Oracle多表查詢的優化
1,重複性查詢 當你向oracle提供乙個sql的時候,oracle會首先在相應的記憶體中查詢這條語句,如果匹配到,就能直接返回結果,這樣就能節省記憶體和提高資料訪問效率。但是匹配sql語句需要注意以下幾點 1 字元級的比較 sql語句和共享池中的語句必須完全相同才能匹配完整,尤其注意大小寫和空格 ...
JPA 多條件 多表查詢
jpa對於簡單的查詢操作確實很給力,但是涉及到多表 多條件 分頁的場景就不是很好實現了。可行的解決方案 1 多條件 public inte ce baserepositoryextends jparepository,jpaspecificationexecutor使用specification來實...
mybatis plus 多表條件分頁查詢
今天寫mybatis plus 多表條件分頁查詢的時候碰到很多問題,這裡記錄下 首先說下業務,這個是要展現的頁面。根據篩選的條件對資料進行分頁查詢。setter getter noargsconstructor allargsconstructor public class pagedweeklyd...