比如:查詢會員列表的話,where后面帶很多個if test條件是不是會影響效率,還是重寫個sql,但是如果每個條件查詢都重寫sql,sql又太多了,顯得很亂。該怎么選擇?
4 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊
肯定有緩存的,應(yīng)該不會太影響效率。
另外,有N個條件,那么對應(yīng)的條件組合就有2^N個,你要寫多少不同的sql呢?

臨摹微笑
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個贊
1、where后面帶很多個if test條件的情況在查詢功能里很常見,十多二十個查詢條件也很見慣;
2、MyBatis既然提供if test標(biāo)簽功能,肯定是有優(yōu)化過得,比起你寫多個SQL再通過Java代碼判斷分流,肯定效率高很多;
3、執(zhí)行速度影響的大塊是數(shù)據(jù)庫服務(wù)器的硬件配置和數(shù)據(jù)庫平臺,作為普通程序員,還不需要考慮那么多,實(shí)在擔(dān)心這個問題,也可以將自己的代碼放在測試環(huán)境進(jìn)行壓力測試;
4、相比查詢條件的變化,查詢結(jié)果列的變化更影響效率,因?yàn)樾枰謩雨P(guān)閉緩存remapResults
<select id="verificationCode_select" parameterClass="String" resultClass="HashMap" remapResults="true">$sql$</select>
綜上所述,不管行不行,先把代碼和SQL寫出來測試再說吧!
添加回答
舉報
0/150
提交
取消