使用INSTR替換mysql裡面的like

2021-10-11 02:27:17 字數 759 閱讀 7102

mysql裡面的like如果是左右模糊不可以使用索引導致查詢效率極低,這時候我們就可以使用orcal裡面的instr來處理使效率提高

// 這段sql是乙個左右模糊查詢

select * from t_case where name like concat

('%'

,'測試'

,'%');

// 使用instr來替代

select * from instr

(name,

'測試'

)>

0;

上面兩個sql結果完全相同,但是二者效率較高,這時候很多朋友就會問這到底是什麼意思,別著急 我們慢慢了解.

引數一:要查詢的欄位名

引數二:要查詢的值

含義:後面的sql意思就是在要查詢的字段name

裡面從第乙個字開始找要查詢內容測試,找到就返回找不到就不返回.

至於為什麼要在後面》0我測試了一下 如果作為條件的話不加上》0也是沒問題的但是如果是為了查詢引數二所在引數一的什麼位置就可以不用加了見**

select instr

(name,

'哈哈'

);

這句**返回的就是哈哈在name裡面的位置並且返回的是第乙個字元在name裡面的位置 注意:這裡返回的不是索引因為orcal裡面是從1開始沒有0,如果後面加上了》0那麼返回的就是1,順帶提一下instr是orcal裡面的函式但是mysql可以用他兩個引數的語法就是本文使用

提高sql查詢效能 使用instr函式替換like

在查詢時經常使用like作為關鍵字進行模糊查詢,在生產環境中由於資料量較大,使用like查詢時比較慢,嘗試了一些方法,最終發現使用oracle的instr函式可以顯著提高查詢的效率.關於資料量 selectcount 1 fromt partner role 612565 selectcount 1...

mysql使用instr達到in 字串 的效果

使用mysql遇到一種情況 需要查出id在某乙個id拼接的字串中的記錄,這個時候用id in id1,id2,行不通,因為in語法裡面的引數是數字型的,應該用instr語法,instr idsstr,id 其中idsstr id1,id2,id3 下面舉例說明 create table t city...

mysql使用instr達到in 字串 的效果

使用mysql遇到一種情況 需要查出id在某乙個id拼接的字串中的記錄,這個時候用id in id1,id2,行不通,因為in語法裡面的引數是數字型的,應該用instr語法,instr idsstr,id 其中idsstr id1,id2,id3 下面舉例說明 1 建表 create table t...