MyBatis中Like語句使用方式及解決索引失效

2021-08-21 22:41:33 字數 1889 閱讀 5457

知識點:mybatis使用#和$區別,mybatis使用concat,使用bind。使用like如何優化,使索引不失效。知識點就這些,也沒有必要再寫一遍,我從網上把知識點具體使用的「輪子」拷貝過來,但正確性未驗證,請注意甄別。

1 mybatis中如何使用like(未驗證,摘抄自 鏈結 )

oracle資料庫:select*fromuser

where

name like concat('%',#,'%')

select

*

from

user

where

name like '%'||#||'%'

sqlserver資料庫:

select

*

from

user

where

name like '%'+#+'%'

mysql資料庫:

select

*

from

user

where

name like concat('%',#,'%')

db2資料庫:

select

*

from

user

where

name like concat('%',#,'%')

select

*

from

user

where

name like '%'||#||'%'

2 like模糊查詢索引失效

哪些場景索引失效?

1. like %keyword 索引失效,使用全表掃瞄。但可以通過翻轉函式+like前模糊查詢+建立翻轉函式索引=走翻轉函式索引,不走全表掃瞄。2. like keyword% 索引有效。3. like %keyword% 索引失效,也無法使用反向索引。解決方法:1 select主鍵  2 覆蓋索引法  3 全文索引法(全文索引,只對myisam引擎有用。主要是針對對檔案,文字的檢索。)  4 使用全文檢索引擎工具包 (摘自 鏈結 。我以前用過覆蓋索引和主鍵索引,其他兩種未用過)

3 補充

mybatis中使用bind代替concat(摘自劉增輝 mybatis從入門到精通)

Mybatis中運用小技巧(二) like的使用

假設要找使用者姓名中即含 李 又含 香 的使用者,mysql中用like可以解決,語句為 select from user where u name like 李 and u name like 香 listselectillegibilitybyname listnames names是乙個由單個...

mybatis中LIKE模糊查詢

mybatis中對於使用like來進行模糊查詢的幾種方式 使用 由於 是引數直接注入的,導致這種寫法,大括號裡面不能註明jdbctype,不然會報錯org.mybatis.spring.mybatissystemexception nested exception is org.apache.iba...

ORACLE中LIKE語句優化

1 盡量不要使用 like 2。對於 like 不以 開頭 oracle 可以應用 colunm 上的index 3。對於 like 的 不以 結尾 可以利用 reverse function index 的形式,變化成 like 建測試表和 index 注意,重點在於帶 reverse 的func...