采取reverse索引优化like语句的方式详解

当来一些景象下,开发同学时不时以like去实现部分工作需求,当用like时,我们且明白用like
前%(like
‘%111’)这种状态是无能为力利用索引的,那么怎样优化此类的SQL呢,下面是一个案例。

原SQL如下:

图片 1

pcc_cust_infonew 表索引如下

图片 2

实施规划如下:

图片 3

此地可以看来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索引的款型展开优化。

优化如下: 
修改索引

图片 4

将SQL调整为

图片 5

本上述调整后,SQL执行效率提升到毫秒级。

图片 6

调动后底行计划如下:

图片 7

那么用reverse函数索引后,到底是哪些形成好采取索引了邪,当您看实行计划下的称为词信息或你虽清楚答案了,

图片 8

事实上就算是运用reverse函数索引将引得数据反转,SQL中之where条件中拿价值反转,这样就算拿前%改吧后%。

相关文章