ORACLE RAW列不走索引的问题解决

一、表结构

LABEL_PARAM有2亿多的数据。不走索引查一条数据需要花费5-10分钟。

 二、不走索引的SQL和执行计划

select * from MITLABELMANAGER.label_param where label_id = 'C4A879E9CC8246FB9053004735F2604A' 

 

发现LABEL_ID列需要通过RAWTOHEX方法转换成HEX类型再与ID进行比较,由于经过了转换,所以必须要进行全表扫描了。

所以只要提前将ID转换成RAW类型的输入就可以解决问题。

三、优化后的可以走索引的SQL和执行计划

优化之后走索引了,每次查询只需要零点几秒,满足生产查询要求

select * from MITLABELMANAGER.label_param where label_id = HEXTORAW('C4A879E9CC8246FB9053004735F2604A') 

 

原文地址:https://www.cnblogs.com/CryOnMyShoulder/p/15791036.html