Oracle 隐式转换「终于解决」

Oracle 隐式转换「终于解决」Oracle在执行自隐式转换时:总是会把字符串转为数字,字符串转为日期。当列进行转换,会跳过索引,降低性能。 创建一个表格,给三个列建立索引,进行测试。 create table t1(n1 numb

Oracle 隐式转换

Oracle在执行自隐式转换时:总是会把字符串转为数字,字符串转为日期。当列进行转换,会跳过索引,降低性能。

  1. 创建一个表格,给三个列建立索引,进行测试。
Oracle 隐式转换「终于解决」

create table t1(n1 number, v1 varchar2(10), d1 date);

insert into t1
  select
        rownum n1
      , rownum v1
      , sysdate + dbms_random.value(0,365)
  from
        dual
connect by level <= 1e3;


create index t1_n1_idx on t1(n1);
create index t1_v1_idx on t1(v1);
create index t1_d1_idx on t1(d1);

代码100分

View Code

  • 查看执行计划,v1列因为隐式to_number,所以没有走索引
代码100分select count(1) from t1 where v1 = 1

Oracle 隐式转换「终于解决」

 

下面的走索引T1_V1_IDX

select count(1) from t1 where v1 = "1"

Oracle 隐式转换「终于解决」

  • 查看执行计划,因为v1列需要转日期,所以不走索引

Oracle 隐式转换「终于解决」

只要列不转类型,就走索引

Oracle 隐式转换「终于解决」

 Oracle 隐式转换「终于解决」

 

总结自:https://www.red-gate.com/simple-talk/sql/oracle/oracle-data-type-implicit-conversion-hierarchy/

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7760.html

(0)
上一篇 2023-03-14
下一篇 2023-03-14

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注