Oracle模糊查詢優化小技巧

技巧說明

咱們平時模糊查詢第一個想到的是 like ,可是當數據量很是大的時候,用 like 可能會半天不出來結果。
因此,我就在網上搜索優化模糊查詢的方法,先試了一條簡單的: 用instr函數代替like數據庫

instr函數有兩個參數:instr(string1,string2)函數

  • string1 是原字符串
  • string2 是要查找的字符串

好比,instr("hello,world!","llo") 這個函數會返回要截取的字符串 "llo" 在原字符串中的位置 3,當沒有找到要截取的字符串時,會返回 0。
因此:測試

  • instr(title,’aaa’)>0 至關於like
  • instr(title,’aaa’)=0 至關於not like

instr在模糊查詢中能夠這樣使用:
好比,name 是 student表裏面的一列:
select * from student s where instr(name,"zhangsan") > 0;
會返回查到name爲zhangsan那一列的結果。優化

因此,這是一個能夠代替 like 使用的小技巧。spa

測試

  • 數據量:5000萬條
  • 數據庫:Oracle

圖片描述

  1. 用like查詢,用時90秒:

圖片描述

  1. 用instr查詢,用時70秒:

圖片描述

雖然,和用索引查詢比起來,這點優化算是小巫見大巫,但是也有進步,生活須要一雙發現美的眼睛,哈哈。索引

相關文章
相關標籤/搜索