1. 程式人生 > >Oracle資料庫中的like優化-效能調優

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

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


    程式碼:


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


    [email protected]> select reverse('123') from dual;REVERSE('123')

    --------------------------------

    321


    1 row selected.

    [email protected]> create table test_like as select object_id,object_name from dba_objects;

    Table created.

    [email protected]> create index test_like__name on test_like(object_name);

    Index created.

    [email protected]

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

    Index created.
    [email protected]> analyze table test_like compute statistics for table for all indexes;

    Table analyzed.

    [email protected]> set autotrace trace exp


    -- '常量開頭的like , 會利用index ,沒問題…… '

    [email protected]> select * from test_like where object_name like 'AS%';


    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST_LIKE' (Cost=2 Card=655Bytes=15720)

    2 1 INDEX (RANGE SCAN) OF 'TEST_LIKE__NAME' (NON-UNIQUE) (Cost=2 Card=118)


    --'開頭和結尾都是 % ,對不起,很難優化'

    [email protected]> select * from test_like where object_name like '%%';


    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (FULL) OF 'TEST_LIKE' (Cost=6 Card=655 ytes=15720)


    -- '以常量結束,直接寫的時候是不能應用index的'

    [email protected]> select * from test_like where object_name like '%S';

    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (FULL) OF 'TEST_LIKE' (Cost=6 Card=655 Bytes=15720)


    --'以常量結束的,加個reverse 函式,又可以用上index了'

    [email protected]> select * from test_like where reverse(object_name)like reverse('%AS');

    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=655 Bytes=15720)

    1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST_LIKE' (Cost=2 Card=655 Bytes=15720)

    2 1 INDEX (RANGE SCAN) OF 'TEST_LIKE__NAME_REVERSE' (NON-UNIQUE) (Cost=2 Card=118)

相關推薦

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 '%...' 的 (不以 % 結尾),可

網站高併發優化效能調總結

最近在對PHP網站高併發高效能有所領悟,今天寫一篇關於這方面的文章。今天用我的測試站點:http://zhimo.yuanzhumuban.cc/來講解例項。 支模網整體開發到上線為10個月左右,後端採用php開源框架destoon,站點總資料為800萬,其中每天會更新入庫資料5000-50000資料不等,

oracle 效能調資料庫的常見效能問題

在Oracle資料庫中找到的常見的效能問題  這部分列列表,並且描述在oracle資料庫中存在的通用效能問題。 在隨後的oracle效能方法中,你應該能偶避免這些問題。如果你操作過 這些問題的經驗,那麼重複oracle效能方法中的步驟就可以了。這在利用oracle

ifeve.com 南方《JVM 效能調實戰之:使用阿里開源工具 TProfiler 在海量業務程式碼精確定位效能程式碼》

https://blog.csdn.net/defonds/article/details/52598018 多次拉取 JStack,發現很多執行緒處於這個狀態:    at jrockit/vm/Allocator.getNewTla(JJ)V(Native Method) 

oracle:swap效能調

目標:解決大量Log寫入佔用大量的File Cache,內容利用不充分導致swap 基本原則:儘量使用記憶體,減少swap,同時,儘早flush到外存,早點釋放記憶體給寫cache使用。---特別在持續的寫入操作中,此優化非常有效。 調優措施: vm.swapiness :60

MySQL效能優化總結___本文乃《MySQL效能調與架構設計》讀書筆記!

一、MySQL的主要適用場景 1、Web網站系統 2、日誌記錄系統 3、資料倉庫系統 4、嵌入式系統 二、MySQL架構圖:   三、MySQL儲存引擎概述 1)MyISAM儲存引擎 MyISAM儲存引擎的表在資料庫中,每一個表

mysql效能調(一)——查詢資料庫狀態

所謂效能調優,首先要發現問題,才能知道怎麼進行效能調優噻,所以我們先從發現問題開始 1、show status  查詢資料庫狀態      其中監控伺服器狀態比較重要的幾個引數是: Queries 進行多少次查

mysql效能調筆記(二)--查詢優化和索引

一、Mysql執行查詢流程                                                                           mysql執行查詢的流程 mysql執行查詢內部路程:1.客服端傳送一條查詢給伺服器

Qt連線MySQL程式設計及資料庫效能調(一)

之前整理過一篇Qt下資料庫程式設計基礎 :最近在進行單元測試,所以把遇到的一些問題整理出來,主要是關於資料庫的 1.遠端連線資料庫 連線語句是: mysql -h 192.168.xx.xx(IP地址) -P 3306(埠) -u remoteuser(登入使用

效能調之MySQL篇三:MySQL配置定位以及優化

1、優化方式 一般的優化方法有:硬體優化,配置優化,sql優化,表結構優化。下面僅僅介紹配置優化,具體優化設定可以參考本人另外一篇部落格,傳送門:https://www.cnblogs.com/langhuagungun/p/9507206.html 2、mysql配置分析 1)常見瓶頸 90%系統瓶

效能調之MySQL篇四:MySQL配置定位以及優化

一、CPU最大效能模式 cpu利用特點 5.1 最高可用4個核 5.5 最高可用24核 5.6 最高可用64核心 一次query對應一個邏輯CPU 你仔細檢查的話,有些伺服器上會有的一個有趣的現象:你cat /proc/cpuinfo時,會發現CPU的頻率竟然跟它標

JVM 效能調實戰之 使用阿里開源工具 TProfiler 在海量業務程式碼精確定位效能程式碼

                本文是《JVM 效能調優實戰之:一次系統性能瓶頸的尋找過程》 的後續篇,該篇介紹瞭如何使用 JDK 自身提供的工具進行 JVM 調優將 TPS 由 2.5 提升到 20 (提升了 7 倍),並準確定位系統瓶頸:我們應用裡靜態物件不是太多、有大量的業務執行緒在頻繁建立一些生命週期

Spark效能調---fastutil優化資料格式

Spark中應用fastutil的場景: 1、如果運算元函式使用了外部變數;那麼第一,你可以使用Broadcast廣播變數優化;第二,可以使用Kryo序列化類庫,提升序列化效能和效率;第三,如果外部變數是某種比較大的集合,那麼可以考慮使用fastutil改寫外部變數,首先從源頭上就減少記憶體的佔

轉【Zabbix效能調:配置優化

轉載:https://sre.ink/zabbix-turn-conf/ #通過日誌可以分析當前服務狀態。LogFile=/tmp/zabbix_server.log #日誌檔案路徑。LogFileSize=1 #日誌檔案最大值(MB),超過則滾動,設為0表示不回滾。DebugLevel=3 #除錯日誌級別

spark效能調:資源優化

在開發完Spark作業之後,就該為作業配置合適的資源了。Spark的資源引數,基本都可以在spark-submit命令中作為引數設定。很多Spark初學者,通常不知道該設定哪些必要的引數,以及如何設定這些引數,最後就只能胡亂設定,甚至壓根兒不設定。資源引數設定的不合理,可能

Mongodb效能調 -效能優化建議

摘要 1. MongoDB 適用場景簡介 2. Mongodb 效能監控與分析 3. Mongodb 效能優化建議 關於Mongodb的幾個大事件 1.根據美國資料庫知識大全官網釋出的DB熱度排行,Mongodb的熱度排名從2014年的第5名,在2015年躍升為第4名,僅次於主流DB(Oracle

java多執行緒程式效能調 優化過程

我, 一多年c++開發,由於專案原因需要對一個性能底下的多執行緒java程式進行調優,百度google了幾把,媽蛋,沒有發現指導如何java執行緒調優的文章啊,都是一些java使用規範,我去,那我大java的開發工程師都是怎麼調優的啊, 那我大C++工程師就帶領大家如何j

Spark商業案例與效能調實戰100課》第3課:商業案例之通過RDD分析大資料電影點評系各種型別的最喜愛電影TopN及效能優化技巧

Spark商業案例與效能調優實戰100課》第3課:商業案例之通過RDD分析大資料電影點評系各種型別的最喜愛電影TopN及效能優化技 原始碼 package com.dt.spark.core

Oracle效能調 AWR分析一例

本節包含了Oracle關鍵指標的記憶體命中率及其它資料庫例項操作的效率。其中Buffer Hit Ratio 也稱Cache Hit Ratio,Library Hit ratio也稱Library Cache Hit ratio。同Load Profile一節相同,這一節也沒有所謂“正確”的值,而只能根據應