oracle中like優化的方法
在oracle中對於like操作時,如果是前後都是模糊查詢的時候(類似於col01 like ‘%xxx%’)是沒有辦法用到索引的,這裡提供一種對於這種情況的優化思路,主要的思路是把大表變小,把查詢的實體表變窄,把需要的資料放到索引裡.
常規的寫法:
create table t01 as select * from dba_objects;
SQL> create index t01_01
on t01(object_name);
|
Index created.
|
SQL> set autot trace
|
SQL> select *
from t01
where object_name
like '%EMP%' ; |
176 rows selected.
|
Execution Plan |
---------------------------------------------------------- |
Plan hash value: 3295674804 |
-------------------------------------------------------------------------- |
| Id | Operation | Name |
Rows | Bytes | Cost (%CPU)|
Time |
|
-------------------------------------------------------------------------- |
| 0 | SELECT STATEMENT | | 7091 | 775K| 522 (1)| 00:00:07 | |
|* 1 | TABLE ACCESS
FULL | T01 | 7091 | 775K| 522 (1)| 00:00:07 | |
-------------------------------------------------------------------------- |
Predicate Information (identified
by operation id):
|
--------------------------------------------------- |
1 - filter( "OBJECT_NAME" LIKE
'%EMP%' )
|
Statistics |
---------------------------------------------------------- |
1 recursive calls |
0 db block gets |
2335 consistent gets |
0 physical reads |
0 redo size |
14552 bytes sent via SQL*Net to client
|
608 bytes received via SQL*Net from client
|
13 SQL*Net roundtrips to / from client
|
0 sorts (memory) |
0 sorts (disk) |
176 rows processed |
優化後的寫法:
SQL> select /*+ use_nl(t01 v01) */ *
|
from t01, ( select rowid
from t01
where object_name
like '%EMP%' ) v01 |
where t01.rowid = v01.rowid;
|
176 rows selected.
|
Execution Plan |
---------------------------------------------------------- |
Plan hash value: 73453348 |
-------------------------------------------------------------------------------------- |
| Id | Operation | Name |
Rows | Bytes | Cost (%CPU)|
Time |
|
-------------------------------------------------------------------------------------- |
| 0 | SELECT STATEMENT | | 7091 | 1017K| 7241 (1)| 00:01:27 | |
| 1 | NESTED LOOPS | | 7091 | 1017K| 7241 (1)| 00:01:27 | |
|* 2 | INDEX FAST
FULL SCAN | T01_01 | 7091 | 242K| 147 (2)| 00:00:02 | |
| 3 | TABLE ACCESS
BY USER
ROWID| T01 | 1 | 112 | 1 (0)| 00:00:01 |
|
-------------------------------------------------------------------------------------- |
Predicate Information (identified
by operation id):
|
--------------------------------------------------- |
2 - filter( "OBJECT_NAME" LIKE
'%EMP%' )
|
Statistics |
---------------------------------------------------------- |
1 recursive calls |
0 db block gets |
857 consistent gets |
0 physical reads |
0 redo size |
18049 bytes sent via SQL*Net to client
|
608 bytes received via SQL*Net from client
|
13 SQL*Net roundtrips to / from client
|
0 sorts (memory) |
0 sorts (disk) |
176 rows processed |
針對於上面的例子,IO從2335降到857,用這種方法在表越寬返回記錄越少時效果越好.
相關推薦
oracle中like優化的方法
在oracle中對於like操作時,如果是前後都是模糊查詢的時候(類似於col01 like ‘%xxx%’)是沒有辦法用到索引的,這裡提供一種對於這種情況的優化思路,主要的思路是把大表變小,把查詢的實體表變窄,把需要的資料放到索引裡. 常規的寫法: create tab
ORACLE中LIKE語句優化
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種方法,需要的朋友可以參考
Oracle中like模糊查詢及萬用字元
like 模糊查詢 我們只知道個別字母或者欄位,不太確定要查詢的準確資訊時,可以使用模糊查詢(即like),查詢出所有與自己已知的"零碎"資訊有關的全部資訊。 這就要用的like模糊查詢了,其萬用字
深度學習之(十一)Deep learning中的優化方法:隨機梯度下降、受限的BFGS、共軛梯度法
三種常見優化演算法:SGD(隨機梯度下降),LBFGS(受限的BFGS),CG(共軛梯度法)。 1.SGD(隨機梯度下降) 隨機梯度下降(Stochastic Gradient Descent, SGD)是隨機和優化相結合的產物,是一種很神奇的優化方法,屬於
ORACLE中like與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
oracle中REGEXP_SUBSTR方法的使用
word 位置 那是 process 網上 部分 parent post cda 近期在做商旅機票平臺,遇到這樣一個問題: 有一張tt_ticket表,用來存機票信息。裏邊有一個字段叫schedule,表示的是行程,存儲格式為:北京/虹橋 由於公司
OC中如何優化代理是否響應某個方法
base sign some nds lda toc something lec replace 看以下示例代碼: if([_delegate respondsToSelector: @selector(someClassDidSomething:)){
oracle中connect 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’等廣泛使用的條碼均能解析。簡單是通過默認參數