知識點:mybatis使用#和$區別,mybatis使用concat,使用bind。使用like如何優化,使索引不失效。知識點就這些,也沒有必要再寫一遍,我從網上把知識點具體使用的「輪子」拷貝過來,但正確性未驗證,請注意甄別。
1 mybatis中如何使用like(未驗證,摘抄自 鏈結 )
oracle資料庫:
select
*
from
user
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...