国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > 文庫 > 正文

利用reverse索引優化like語句的方法詳解

2020-10-29 21:48:20
字體:
來源:轉載
供稿:網友

前言

在有一些情況下,開發同學經常使用like去實現一些業務需求,當使用like時,我們都知道使用like 前%(like ‘%111')這種情況是無法使用索引的,那么如何優化此類的SQL呢,下面是一個案例。

原SQL如下:

pcc_cust_infonew 表索引如下

執行設計如下:

這里可以看到SQL執行3.96秒,執行計劃中也可以發現PCC_CUST_INFONEW表走TABLE ACCESS FULL掃描,返回約380k的數據,然后再與PCC_CUST_CONTRACTCOMPANY表主鍵PK_PCC_CUST_CONTRACTCOMPANY走INDEX UNIQUE SCAN,這里慢主要是執行計劃中為3的這一步。

我們也都知道在Oracle中,當使用like時,如果是后%(like ‘138%')是可以使用索引的,如果是前%(like ‘%138')是無法正常使用索引。那么如何讓前%也可以使用到索引呢,答案是可以使用reverse索引的形式進行優化。

優化如下:

修改索引

將SQL調整為

按以上調整后,SQL執行效率提升到毫秒級。

調整后的執行計劃如下:

那使用reverse函數索引后,到底是如何做到可以使用索引了呢,當你看到執行計劃下面的謂詞信息想必你就知道答案了,

其實就是使用reverse函數索引將索引數據反轉,SQL中的where條件中將值反轉,這樣就將前%改為后%。

總結

以上就是關于使用reverse索引優化like語句的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦江县| 五峰| 龙胜| 鹿邑县| 南乐县| 郯城县| 鲁甸县| 丰宁| 高青县| 大方县| 通城县| 犍为县| 洛隆县| 广宗县| 河曲县| 综艺| 晴隆县| 陕西省| 勃利县| 汶川县| 故城县| 梁河县| 安陆市| 巨鹿县| 嵩明县| 淮北市| 威宁| 德昌县| 大关县| 敦煌市| 拉萨市| 乡城县| 离岛区| 牟定县| 临邑县| 延寿县| 崇州市| 格尔木市| 临沧市| 顺义区| 横峰县|