1. 程式人生 > 其它 >慢sql_查詢條件加了函式導致索引失效

慢sql_查詢條件加了函式導致索引失效

問題背景:生產環境查詢很慢,通過skywaking全鏈路監控發現/get請求相關的一個sql為慢sql,慢的原因在於查詢欄位使用了加解密函式(  CONVERT(AES_DECRYPT(UNHEX(`欄位名`),'金鑰') USING utf8)  )

以下為驗證過程:

【先往表target_regulator_tx_info中插入資料用來測試查詢操作,其中欄位sender為加密欄位】

>>>>>>>>>>>>>>>>>>先看看沒有索引時的查詢情況<<<<<<<<<<<<<<<<<<<<<<

 

 

 

 可以看到:沒有索引走的全表掃描。順便看一下查詢條件使用函式時的耗時:

 

 可以看到:用sender這個欄位查詢時,在同樣沒有索引的條件下,使用函式比不使用函式慢

>>>>>>>>>>>>>>>>>>DONE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 

>>>>>>>>>>>>>>>>>>再來看看加上索引時的查詢情況<<<<<<<<<<<<<<<<<<<<<<

 

 

 

 

 可以看到:加了索引後此時走的索引掃描。順便看一下查詢條件使用函式時的耗時:

 

可以看到: 即使這個欄位加了索引,這種條件下查詢時依然是那麼慢

>>>>>>>>>>>>>>>>>>DONE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 

優化:修改sql,查詢條件不進行函式運算,查詢條件的值進行加解密運算後,再進行查詢