1. 程式人生 > >oracle中like優化的方法

oracle中like優化的方法

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

常規的寫法:

 create table t01 as select * from dba_objects;

SQL> createindext01_01 ont01(object_name);
Indexcreated.
SQL> setautot trace
SQL> select* fromt01 whereobject_name
like'%EMP%';
176 rowsselected.
Execution Plan
----------------------------------------------------------
Plan hash value: 3295674804
--------------------------------------------------------------------------
| Id  | Operation         | Name| Rows | Bytes | Cost (%CPU)| Time    |
--------------------------------------------------------------------------
|   0 | SELECTSTATEMENT  |      |  7091 |   775K|   522   (1)| 00:00:07 |
|*  1 |  TABLEACCESS FULL| T01  |  7091 |   775K|   522   (1)| 00:00:07 |
--------------------------------------------------------------------------
Predicate Information (identified byoperation id):
---------------------------------------------------
1 - filter("OBJECT_NAME"LIKE '%EMP%')
Statistics
----------------------------------------------------------
1  recursive calls
0  db block gets
2335  consistent gets
0  physical reads
0  redosize
14552  bytes sent via SQL*Nettoclient
608  bytes received via SQL*Netfromclient
13  SQL*Net roundtripsto/fromclient
0  sorts (memory)
0  sorts (disk)
176 rowsprocessed

優化後的寫法:

SQL> select/*+ use_nl(t01 v01) */*
fromt01, (selectrowid fromt01 whereobject_name like'%EMP%') v01
wheret01.rowid = v01.rowid;
176 rowsselected.
Execution Plan
----------------------------------------------------------
Plan hash value: 73453348
--------------------------------------------------------------------------------------
| Id  | Operation                   |Name  | Rows | Bytes | Cost (%CPU)| Time    |
--------------------------------------------------------------------------------------
|   0 | SELECTSTATEMENT            |        |  7091 |  1017K|  7241   (1)| 00:01:27 |
|   1 |  NESTED LOOPS               |        |  7091 |  1017K|  7241   (1)| 00:01:27 |
|*  2 |   INDEXFAST FULLSCAN      | T01_01 |  7091 |   242K|   147   (2)| 00:00:02 |
|   3 |   TABLEACCESS BYUSER ROWID| T01    |     1 |   112 |     1   (0)| 00:00:01 |
--------------------------------------------------------------------------------------
Predicate Information (identified byoperation id):
---------------------------------------------------
2 - filter("OBJECT_NAME"LIKE '%EMP%')
Statistics
----------------------------------------------------------
1  recursive calls
0  db block gets
857  consistent gets
0  physical reads
0  redosize
18049  bytes sent via SQL*Nettoclient
608  bytes received via SQL*Netfromclient
13  SQL*Net roundtripsto/fromclient
0  sorts (memory)
0  sorts (disk)
176 rowsprocessed

 針對於上面的例子,IO從2335降到857,用這種方法在表越寬返回記錄越少時效果越好.

相關推薦

oraclelike優化方法

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

ORACLELIKE語句優化

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

數學工具(三)scipy優化方法

rain return ted bounds 使用 slice turn message http 給定一個多維函數,如何求解全局最優? 文章包括: 1.全局最優的求解:暴力方法 2.全局最優的求解:fmin函數 3.凸優化 函數的曲面圖 import numpy as n

機器學習常見優化方法匯總

bsp keep atl 之前 ima http bject ESS ati http://www.scipy-lectures.org/advanced/mathematical_optimization/index.html#a-review-of-the-differ

影象與視訊處理優化方法

問題與初步思考 問題重述 問題一:視訊的前後背景分離 給定一段視訊(也可以說給定很多幀連續的影象),視訊中有一些人或者別的東西在動(前景),也有一些不動的景象(背景)。要求使用背景建模的相關技術(最好使用優化方法),區分出前景和背景,輸出為視訊的每一幀對應的前景和背景。

深度學習優化方法總結

梯度下降沿著整個訓練集的梯度方向下降。可以使用隨機梯度下降很大程度地加速,沿著隨機挑選的小批量資料的梯度下降。 批量演算法和小批量演算法 使用小批量的原因 n個樣本均值的標準差是σn√σn,其中σσ是樣本值真實的標準差。分母n−−√n表明使用更多的樣本來估計梯度的方

Oracle SQL查詢優化方法1

系統優化中很重要的方面是SQL語句的優化,對於海量資料,優質的SQL能夠有效的提高系統的可用性。 總結的有點羅嗦,列個簡單的目錄啦~ 目錄 知識準備 1. sql執行過程 1)執行過程   當一個oracle例項接收到一條sql後,執行過程

Java效能優化方法彙總

很多同學在日常寫Java的時候很少去關心效能問題,但是在我們寫程式碼的過程中必須考慮到效能對程式的影響。小到我們使用位運算來實現算術運算,大到我們對 Java 程式碼的總體架構設計,效能其實離我們很近。本文介紹了Java中效能優化的35種方法,需要的朋友可以參考

Oraclelike模糊查詢及萬用字元

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

深度學習之(十一)Deep learning優化方法:隨機梯度下降、受限的BFGS、共軛梯度法

  三種常見優化演算法:SGD(隨機梯度下降),LBFGS(受限的BFGS),CG(共軛梯度法)。      1.SGD(隨機梯度下降)        隨機梯度下降(Stochastic Gradient Descent, SGD)是隨機和優化相結合的產物,是一種很神奇的優化方法,屬於

ORACLElike與instr效能大比拼

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

Oracle可以代替like進行模糊查詢的方法instr(更高效)

一、簡介 相信大家都使用過like進行模糊匹配查詢,在oracle中,instr()方法可以用來代替like進行模糊查詢,大資料量的時候效率更高。本文將對instr()的基本使用方法進行詳解以及通過示例講解與like的效率對比。 二、使用說明 instr(sourceString,des

Oracle資料庫like優化-效能調優

1。儘量不要使用 like '%..%'         2。對於 like '..%..' (不以 % 開頭),Oracle可以應用 colunm上的index         3。對於 like '%...' 的 (不以 % 結尾),可以利用reverse + fu

快速掌握Oracle資料庫like優化-效能調優

掌握Oracle資料庫中的like優化-效能調優    1.儘量不要使用 like '%..%'    2.對於 like '..%..' (不以 % 開頭),Oracle可以應用 colunm上的index    3.對於 like '%...' 的 (不以 % 結尾),可

Oracle查看表是否被鎖和如何解鎖的處理方法

objects dba where type 語句 ner term and schema --1、以下幾個為相關表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * F

oracleREGEXP_SUBSTR方法的使用

word 位置 那是 process 網上 部分 parent post cda 近期在做商旅機票平臺,遇到這樣一個問題: 有一張tt_ticket表,用來存機票信息。裏邊有一個字段叫schedule,表示的是行程,存儲格式為:北京/虹橋 由於公司

OC如何優化代理是否響應某個方法

base sign some nds lda toc something lec replace 看以下示例代碼: if([_delegate respondsToSelector: @selector(someClassDidSomething:)){

oracleconnect by語句的優化

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

Oracle查看最近被修改過的表的方法

條件表達式 通過 use 語句 acl 查詢 查看 select 方法 select uat.table_name as 表名,(select last_ddl_time from user_objects                    where obj

Halcon二維碼解析函數解碼率和時長的優化方法

實現 creat module erl 包括 isp display 驅動 其中 Halcon中條碼解析函數包容多種條碼類型且簡單強大。現有的‘Data Matrix ECC 200’、‘QR Code’和‘PDF417’等廣泛使用的條碼均能解析。簡單是通過默認參數