激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - MyBatis自動生成Where語句

MyBatis自動生成Where語句

2020-06-03 11:51萬劍齊發 JAVA教程

這篇文章主要介紹了MyBatis自動生成Where語句的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

最近監控到類似這樣一個慢查詢:

?
1
2
3
4
select delete_flag,delete_time
from D_OrderInfo
   WHERE ( OrderId is not null and
          OrderId = N'xxxx')

D_OrderInfo表上有一個OrderId的索引,但OrderId字段是Varchar類型。

由于開發框架MyBatis自動生成Where條件不會指定參數類型,字符串類型的參數到了SQLServer里就自動成了NVARCHAR(4000)類型了,坑人的是,不指定參數類型也就罷了,還自動加了個OrderId Is NOT NULL這樣一個非SARG的條件,執行計劃成了這樣:

MyBatis自動生成Where語句

---------------------------------------------------------------------------------------------
如果沒有OrderId IS NOT NULL這個條件,執行計劃會是這樣的:

MyBatis自動生成Where語句

由于參數類型Nvarchar比索引字段類型varchar優先級要高,不能直接轉換,但SQLServer優化器最終還是將他轉成了一個范圍值,最終的等號查詢也變成了類似一個小范圍查詢。

可以從Index Seek這一步的詳細信息可以看出:


MyBatis自動生成Where語句

------------------------------------------------------------------------

如果參數類型匹配,那么執行計劃會是想象中的那樣(雖然沒有包含到,還是有Key Lookup):


MyBatis自動生成Where語句

當然,有點小小強迫癥的我最終希望的寫法是這樣的:

?
1
2
3
select delete_flag,delete_time
from D_OrderInfo
   WHERE OrderId = 'xxxx'

執行計劃當然也會是這樣的:

MyBatis自動生成Where語句

只是,只是不知道最終開發大神能改成什么樣......

開發大神的解決方案:連接字符串中配置:

?
1
sendStringParametersAsUnicode=false

后記:

默認情況下,Java 中的字符數據作為 Unicode 進行處理;Java String 對象表示 Unicode 字符數據。在 JDBC 驅動程序中,唯一可以不遵守此規則的是 ASCII 流 getter 和 setter 方法,這屬于比較特殊的情況,因為這些方法使用的字節流帶有單個已知代碼頁 (ASCII) 的隱式假定。

此外,JDBC 驅動程序提供了 sendStringParametersAsUnicode 連接字符串屬性。此屬性可用于指定作為 ASCII 而不是 Unicode 來發送的字符數據的預定義參數。

作為性能方面的一項增強功能,可以通過設置 sendStringParametersAsUnicode 連接字符串屬性將 String 參數以非 Unicode 格式傳遞到 SQL Server。sendStringParametersAsUnicode 的默認設置為“true”,這意味著 String 參數將作為 Unicode 進行發送。

如果 sendStringParametersAsUnicode 設置為“false”,則連接上的所有 String 參數將使用數據庫默認的排序規則發送到服務器。

參考:

http://d.hatena.ne.jp/gnarl/20110706/1309945379

https://technet.microsoft.com/zh-cn/library/ms378857(SQL.90).aspx

https://technet.microsoft.com/zh-cn/library/ms378988(v=sql.90).aspx

原文鏈接:http://www.cnblogs.com/ajiangg/p/5199526.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色小视频在线免费看 | 在线日韩av电影 | 精品国产视频一区二区三区 | 国产午夜精品一区二区三区嫩草 | 国产精品一区二区手机在线观看 | 日韩精品久久久久久久电影99爱 | 欧美a视频 | 中文字幕国产一区 | 国产成人精品一区二区三区电影 | 法国性xxx精品hd | 国产噜噜噜噜久久久久久久久 | 韩国三级日本三级香港三级黄 | 亚洲免费毛片基地 | 欧美一级爱爱 | 色操网 | 依依成人综合 | 国产精选久久久 | 成年片在线观看 | 精品一区二区三区欧美 | 玩偶姐姐在线观看免费 | 国产高清美女一级毛片久久 | 中国女人内谢69xxxx天美 | 成人久久久精品国产乱码一区二区 | 亚洲午夜一区二区三区 | 少妇一级淫片免费放播放 | 久久一区二区三区av | 亚洲情视频| 在线播放黄色片 | 黑人一级片视频 | 91精品国产乱码久久久久久久久 | 欧美电影在线观看 | 久久久久久久久久亚洲 | 成人免费电影在线观看 | bt 自拍 另类 综合 欧美 | 国产一区二区三区四 | 免费在线看黄 | 91午夜视频 | 特级黄色一级毛片 | 国产精品一区自拍 | 欧美hdfree性xxxx | 狠狠撸电影 |