日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL 语句中对于like 的调优

發布時間:2025/3/15 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL 语句中对于like 的调优 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL> create table test as select * from dba_objects;

表已創建。

SQL> select owner,object_name from test where owner like 'ROBINSON%';

OWNER??????????????????????????????????????????????????????? OBJECT_NAME
------------------------------------------------------------ ------------------------------
ROBINSON???????????????????????????????????????????????????? TEST
ROBINSON???????????????????????????????????????????????????? T2
ROBINSON???????????????????????????????????????????????????? T1
ROBINSON???????????????????????????????????????????????????? T3
ROBINSON???????????????????????????????????????????????????? T4
ROBINSON???????????????????????????????????????????????????? HEX_TO_BIN

已選擇6行。

SQL> create index i_owner on test(owner);

索引已創建。

SQL> update test set owner='SYSMAN' where owner!='ROBINSON';

已更新50353行。

SQL> update test set owner='SYSTEM' where object_id>1000 and object_id<1020;

已更新19行。

SQL> commit;

提交完成。

SQL> update test set owner='SCOTT' where object_id>2000 and object_id<2005;

已更新4行。

SQL> select distinct owner from test;

OWNER
------------------------------------------------------------
ROBINSON
SYSTEM
SCOTT
SYS

SQL> BEGIN
? 2???? DBMS_STATS.GATHER_TABLE_STATS(ownname => 'ROBINSON',
? 3?????????????????????????????????? tabname => 'TEST',
? 4?????????????????????????????????? estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
? 5?????????????????????????????????? method_opt => 'for all columns size repeat',
? 6?????????????????????????????????? degree => DBMS_STATS.AUTO_DEGREE,
? 7?????????????????????????????????? cascade=>TRUE
? 8?????????????????????????????????? );
? 9? END;
?10? /

PL/SQL 過程已成功完成。

SQL> set autot traceonly
SQL> select owner,object_name from test where owner not like 'SYS%';

已選擇10行。


執行計劃
----------------------------------------------------------
Plan hash value: 1357081020

--------------------------------------------------------------------------
| Id? | Operation???????? | Name | Rows? | Bytes | Cost (%CPU)| Time???? |
--------------------------------------------------------------------------
|?? 0 | SELECT STATEMENT? |????? | 25180 |?? 737K|?? 142?? (3)| 00:00:02 |
|*? 1 |? TABLE ACCESS FULL| TEST | 25180 |?? 737K|?? 142?? (3)| 00:00:02 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

?? 1 - filter("OWNER" NOT LIKE 'SYS%')


統計信息
----------------------------------------------------------
????????? 0? recursive calls
????????? 0? db block gets
????????? 0? consistent gets
????????? 0? physical reads
????????? 0? redo size
????????? 0? bytes sent via SQL*Net to client
????????? 0? bytes received via SQL*Net from client
????????? 0? SQL*Net roundtrips to/from client
????????? 0? sorts (memory)
????????? 0? sorts (disk)
???????? 10? rows processed

從此處可以看到選擇了10行,但是卻走了全表掃描,現在對其加HINT提示

SQL> select /*+ INDEX (test I_OWNER) */ owner,object_name from test where owner not like 'SYS%';

已選擇10行。


執行計劃
----------------------------------------------------------
Plan hash value: 469605390

---------------------------------------------------------------------------------------
| Id? | Operation?????????????????? | Name??? | Rows? | Bytes | Cost (%CPU)| Time???? |
---------------------------------------------------------------------------------------
|?? 0 | SELECT STATEMENT??????????? |???????? | 25180 |?? 737K|?? 490?? (1)| 00:00:06 |
|?? 1 |? TABLE ACCESS BY INDEX ROWID| TEST??? | 25180 |?? 737K|?? 490?? (1)| 00:00:06 |
|*? 2 |?? INDEX FULL SCAN?????????? | I_OWNER | 25180 |?????? |?? 140?? (3)| 00:00:02 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

?? 2 - filter("OWNER" NOT LIKE 'SYS%')


統計信息
----------------------------------------------------------
????????? 0? recursive calls
????????? 0? db block gets
????????? 0? consistent gets
????????? 0? physical reads
????????? 0? redo size
????????? 0? bytes sent via SQL*Net to client
????????? 0? bytes received via SQL*Net from client
????????? 0? SQL*Net roundtrips to/from client
????????? 0? sorts (memory)
????????? 0? sorts (disk)
???????? 10? rows processed

?

我們發現,強制加HINT提示所花的成本比全表掃描成本更高,這里要想優化這條SQL 必須改like

SQL> drop index i_owner;

索引已刪除。

SQL>? create? index f_owner on test(instr(owner,'SYS',1,1)) ;

索引已創建。

SQL> select? owner,object_name from test where instr(owner,'SYS',1,1)=0;

已選擇10行。


執行計劃
----------------------------------------------------------
Plan hash value: 535182827

---------------------------------------------------------------------------------------
| Id? | Operation?????????????????? | Name??? | Rows? | Bytes | Cost (%CPU)| Time???? |
---------------------------------------------------------------------------------------
|?? 0 | SELECT STATEMENT??????????? |???????? |?? 504 | 15120 |??? 52?? (0)| 00:00:01 |
|?? 1 |? TABLE ACCESS BY INDEX ROWID| TEST??? |?? 504 | 15120 |??? 52?? (0)| 00:00:01 |
|*? 2 |?? INDEX RANGE SCAN????????? | F_OWNER |?? 201 |?????? |??? 49?? (0)| 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

?? 2 - access(INSTR("OWNER",'SYS',1,1)=0)


統計信息
----------------------------------------------------------
????????? 0? recursive calls
????????? 0? db block gets
????????? 0? consistent gets
????????? 0? physical reads
????????? 0? redo size
????????? 0? bytes sent via SQL*Net to client
????????? 0? bytes received via SQL*Net from client
????????? 0? SQL*Net roundtrips to/from client
????????? 0? sorts (memory)
????????? 0? sorts (disk)
???????? 10? rows processed

當使用函數索引后,COST由原來的142下降到現在的52

總結:對于LIKE語句,我們可以使用instr函數來進行SQL調優

?

?

轉載于:https://www.cnblogs.com/hehe520/archive/2010/03/23/6330603.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的SQL 语句中对于like 的调优的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线视频网站 | 欧美日韩人妻一区二区 | 国产亚洲av片在线观看18女人 | 日日夜夜婷婷 | 亚洲熟妇无码av在线播放 | 中国美女一级看片 | 亚洲天堂网在线视频 | 怨女1988国语版在线观看高清 | 熟女丝袜一区 | 亚洲性色视频 | 日本亲子乱子伦xxxx50路 | 欧美色图17p| 亚洲毛片网 | 8x8ⅹ国产精品一区二区 | 锦绣未央在线观看 | 成人激情站 | 中文字幕乱码中文乱码777 | 免费大片黄在线观看视频网站 | 日本黄色大片免费看 | 艹少妇视频 | 女人扒开腿免费视频app | 91桃色在线观看 | 丝袜美腿亚洲一区二区图片 | 亚洲爆乳无码一区二区三区 | 日日舔夜夜操 | 另类亚洲激情 | 丰满人妻av一区二区三区 | 色七七在线 | 东京热加勒比无码少妇 | 在线看国产 | 人妖被c到高潮欧美gay | 日韩欧美一区二区在线观看 | 日韩黄色小视频 | 蜜桃成人网| 四虎成人在线视频 | 日本大尺度电影免费观看全集中文版 | 一区二区高清在线 | 青青草一区二区三区 | 国产又粗又黄又爽视频 | 久久精品国产成人av | 中文字幕啪啪 | 可以免费在线观看的av | 日本一区二区三区视频免费看 | av不卡在线看 | 亚洲国产乱 | 亚洲第一视频区 | 韩国三级hd中文字幕的背景音乐 | 一本色道久久综合亚洲二区三区 | 99久久视频 | 九九精品视频在线观看 | free性娇小hd第一次 | 日本黄在线观看 | 51人人看| 精品国产一区二区三区四区阿崩 | 韩国精品视频 | 国产盗摄一区二区 | 午夜久久视频 | 青娱乐在线视频免费观看 | 久久天天躁狠狠躁夜夜av | 网友自拍av| 桥本有菜aⅴ一区二区三区 在线午夜电影 | 亚洲av无码一区二区三区在线播放 | 黄色污网站在线观看 | 国产午夜在线一区二区三区 | 一区二区国产电影 | 中文字幕一区二区三区日韩精品 | 屁屁影院第一页 | 久久久久久久一区二区三区 | 免费国产区| 色啊色 | 开心春色激情网 | 台湾佬综合网 | 精品自拍第一页 | 免费av动漫 | 国产福利在线视频 | 国产不卡a| 白浆网站| 色妞在线| 精品国产无码在线观看 | 欧美久久久久久久 | 自拍偷拍第二页 | 国产精品一区二区性色av | 综合色视频 | 日本白嫩的bbw | 日本天堂在线观看 | 啪啪免费视频网站 | 国产剧情一区二区 | 亚洲一级黄色 | 亚洲精品美女在线观看 | 午夜精品一区二区三 | 亚洲精品在线观看av | 日韩av在线播放不卡 | 色视频免费 | 黄色一级片一级片 | 美妇湿透娇羞紧窄迎合 | 啪啪网页 | 精品无码人妻一区二区三 | 国产精品一区二区三区在线播放 | 免费色片 |