多表條件查詢的效能優化

2021-08-23 13:45:18 字數 1273 閱讀 3168

多表條件查詢的效能優化

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...