1. 程式人生 > >ORACLE中LIKE語句優化

ORACLE中LIKE語句優化

 

1。儘量不要使用 like '%%'

    2。對於 like '%' (不以 % 開頭),Oracle可以應用 colunm上的index

3。對於 like '%…' 的 (不以 % 結尾),可以利用reverse + function index 的形式,變化成 like '%'

建測試表和Index,注意,重點在於帶reverse的function index。同時,一定要使用CBO才行

create table test_like as select object_id,object_name from dba_objects;

-------建立測試表

create index test_like__name on test_like(object_name);

------建立索引

create index test_like__name_reverse on test_like(reverse(object_name));

------建立反向索引

analyze table test_like compute statistics for table for all indexes;

------對錶進行分析

都過SQLPLUS連線到資料,一定是SQLPLUS,因為下面有寫命令在PLSQL的命令列中不被支援;

set autotrace trace exp

-----設定SQL跟蹤

set linesize 2000

-------設定輸出寬度

select * from test_like where object_name like 'AS%';

使用了索引

select * from test_like where object_name like '%S';

未使用索引

select * from test_like where reverse(object_name)like reverse('%AS');

使用了索引

相關推薦

ORACLELIKE語句優化

  1。儘量不要使用 like '%%'     2。對於 like '%' (不以 % 開頭),Oracle可以應用 colunm上的index 3。對於 like '%…' 的 (不以 % 結尾),可以利用reverse + function index 的形式,變化成

oraclesql語句優化(轉帖)

本文轉載之http://www.cnblogs.com/netjxz/archive/2009/09/21/1570991.html一、執行順序及優化細則1.表名順序優化 (1) 基礎表放下面,當兩表進行關聯時資料量少的表的表名放右邊表或檢視: Student_info  

oraclelike優化的方法

在oracle中對於like操作時,如果是前後都是模糊查詢的時候(類似於col01 like ‘%xxx%’)是沒有辦法用到索引的,這裡提供一種對於這種情況的優化思路,主要的思路是把大表變小,把查詢的實體表變窄,把需要的資料放到索引裡. 常規的寫法:  create tab

Oracle MERGE語句的用法(轉載)

同時 sdn ble reat nth merge type href detail 原文章出處(http://blog.csdn.net/lichkui/article/details/4306299) MERGE語句是Oracle9i新增的語法,用來合並UPDATE和I

[轉]Oracle的update語句優化研究

lis 錯誤 wid class 插入 集合 top 執行 gin 原文地址:http://blog.csdn.net/u011721927/article/details/39228001 一、 update語句的語法與原理 1. 語法 單表:

Oracle sql語句的取前n條數據

沒有 blog tab 註意 sql table bsp num 數據 取得薪水最高的前五名員工 sql: select * from ( select empno,ename,sal from emp order by sal desc) where rownum&l

ORACLE查詢語句的執行順及where部分條件執行順序測試 Oracle的一些查詢語句及其執行順序 Select 語句執行順序以及如何提高Oracle 基本查詢效率

Oracle中的一些查詢語句及其執行順序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查詢條件:1)LIKE:模糊查詢,需要藉助兩個萬用字元,%:表示0到多個字元;_:標識單個字元。2)IN(list):用來取出符合列表範圍中的資料。3)NOT I

不同型別資料庫LIKE語句使用

不同資料庫的LIKE語句使用略有差別,這裡記錄一下: Oracle資料庫: SELECT *FROM userWHEREname LIKE CONCAT('%',#{name},'%')或SELECT *FROM userWHEREname LIKE '%'||#{name}||'%' 

oracleupdate語句修改多個欄位

如需要修改下列資料:表名為student一般會這樣寫:update student set sname = '李四', sage = 20, sbirthday = to_date('2010-01-01', 'yyyy-mm-dd'),

oracle刪除語句delete,truncate,drop的幾種方式區別

我們都知道oracle中經常用到的刪除語句主要有三種,分別是delete,truncate,drop三種。這裡總結下它們的區別:相同點:1、truncate和不帶where字句的delete以及drop都會刪除表內資料2、truncate和drop都是ddl語句(資料定義語句

oraclesql語句多個查詢結果的交集、差集和並集

1.交集 intersect運算:返回查詢結果中相同的部分。 SELECT product_id FROM tab1 INTERSECT SELECT product_

Oraclelike模糊查詢及萬用字元

like 模糊查詢 我們只知道個別字母或者欄位,不太確定要查詢的準確資訊時,可以使用模糊查詢(即like),查詢出所有與自己已知的"零碎"資訊有關的全部資訊。 這就要用的like模糊查詢了,其萬用字

SQLlike語句萬用字元、轉義符與括號的使用

https://blog.csdn.net/kpchen_0508/article/details/45167481 可以搜尋萬用字元字元。有兩種方法可指定平常用作萬用字元的字元: 使用 ESCAPE 關鍵字定義轉義符。在模式中,當轉義符置於萬用字元之前時,該萬用字

Oracleselect語句執行過程

通過from子句中找到需要查詢的表 通過where子句進行非分組函式篩選判斷 通過group by子句完成分組操作 通過having字句完成組函式篩選判斷 通過select字句選擇顯示的列或表示式及組函式 通過order by字句進行排序操作

MyBatisLike語句使用bind標籤

<select id="selectUser" resultType="user" parameterType="user"> <bind name="pattern" val

ORACLElike與instr效能大比拼

例如: t表中將近有1100萬資料,很多時候,我們要進行字串匹配,在SQL語句中,我們通常使用like來達到我們搜尋的目標。但經過實際測試發現,like的效率與instr函式差別相當大。下面是一些測試結果:SQL> set timing on SQL> selec

MyBatisLike語句使用方式

oracle資料庫:  Java程式碼   SELECT   *   FROM   user   WHERE   name like CONCAT('%',#{name},'%')   或  Java程式碼   SELECT   *   FROM   user   WHERE   name l

ORACLEsql語句----運算子的優先順序

算數運算子——>連線運算子——>比較(關係)運算子——>IS NULL , IS NOT NULL , LIKE , NOT LIKE , IN , NOT IN ——>BETWEEN , NOT BETWEEN ——>NOT 邏輯運算子——&g

MyBatisLike語句使用總結

oracle資料庫: SELECT * FROM user WHERE name like CONCAT('%',#{name},'%') 或 :SELECT * FROM user WHERE name like '%'||#{name}||'%' SQLServer資料

oracleconnect by語句優化

oop sca cnblogs con edi 分享 for unique 定義 很多應用中都會有類似組織機構的表,組織機構的表又通常是典型的層次結構(沒有循環節點)。於是通過組織控制數據權限的時候,許多人都喜歡通過connect by獲得組織信息,然後再過濾目標數據。 在