Oracle 模糊查詢優化

2021-07-11 14:42:48 字數 1134 閱讀 9109

模糊查詢是資料庫查詢中經常用到的,一般常用的格式如下:

(1)字段  like '%關鍵字%'

字段包含"關鍵字「的記錄   即使在目標字段建立索引也不會走索引,速度最慢  

(2)字段  like '關鍵字%'      欄位以"關鍵字"開始的記錄   可以使用到在目標字段建立的公升序索引

(3)字段 like '%關鍵字'      欄位以"關鍵字「結束的記錄    可以使用到目標字段建立的降序索引

對於無法使用索引的 '%關鍵字%' 模式,有沒有辦法優化呢,答案是肯定的,

在oracle中提供了instr(strsource,strtarget)函式,比使用'%關鍵字%'的模式效率高很多。

instr函式說明:

instr

(源字串, 目標字串, 起始位置, 匹配序號)

在oracle

/plsql中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,就是說從字元的開始

到字元的結尾就結束。

語法如下:

引數分析:

string1

源字串,要在此字串中查詢。

string2

要在string1中查詢的字串.

start_position

代表string1 的哪個位置開始查詢。此引數可選,如果省略預設為1. 字串索引從1開始。如果此引數為正,從左到右開始檢索,如果此引數為負,從右到左檢索,返回要查詢的字串在源字串中的開始索引。

代表要查詢第幾次出現的string2. 此引數可選,如果省略,預設為 1.如果為負數系統會報錯。

注意:如果string2在string1中沒有找到,instr函式返回0.

示例:select instr('syranmo','s') from dual; -- 返回 1

select instr('syranmo','ra') from dual;  -- 返回 3

1 select instr('syran mo','a',1,2) from dual;  -- 返回 0

模糊查詢優化:

了解了instr函式的用法,優化就變得簡單了,例如%關鍵字%   等同於  instr(字段,'關鍵字')>0

經過我的簡單測試,instr函式比like %關鍵字% 大概快一倍。

Oracle模糊查詢優化

這是第一篇關於技術的。幹這行一年了 以前就是懶 不愛學習,工作中用不到的。基本都不怎麼會 隨意的一張表裡做一次 select from like 的查詢,舉個例子吧。user表裡 username欄位有 三行資料 uesename abcdef bcdef cbcdef 要求模糊查詢出 bc的use...

Oracle 模糊查詢

在where子句中,可以對datetime char varchar欄位型別的列用like子句配合萬用字元選取那些 很像.的資料記錄,以下是可使用的萬用字元 零或者多個字元 單一任何字元 下劃線 特殊字元 在某一範圍內的字元,如 0 9 或者 aeth 不在某範圍內的字元,如 0 9 或者 aeth...

oracle 模糊查詢

oracle10g以上支援正規表示式的函式主要有下面四個 1,regexp like 與like的功能相似 2,regexp instr 與instr的功能相似 3,regexp substr 與substr的功能相似 4,regexp replace 與replace的功能相似 posix 正規表...