oracel 字段不走索引

用oracle做全表查询时发现一个问题,如果数据库某个varchar2类型的字段建了索引,但是查询的时候扔进入的值是long或integer类型的数据,oracle会不走索引,oracle会对传入的参数做to_char()处理,所以不会走索引。
走索引

如果参数不是字符串类型,而是数字类型,则不走索引。

走索引
select t.username,t.userpassword,t.sex,t.address,t.createtime from SYSTEM_USERINFO t
where t.tel=to_char(13845784589) –tel varchar2类型
这里写图片描述

如果字段是number类型的,参数可以是数字类型也可以试字符类型,结果都会走索引
select t.username,t.userpassword,t.sex,t.address,t.createtime from SYSTEM_USERINFO t where t.user_type=’1’
这里写图片描述
这里写图片描述

下面是日期类型date
select t.username,t.userpassword,t.sex,t.address,t.createtime from SYSTEM_USERINFO t
where to_char(t.createtime,’yyyymmdd’) >’20170606’ –不走索引
–where t.createtime>to_date(‘20170606’,’yyyymmdd’) –走索引
走索引
这里写图片描述

不走索引
这里写图片描述

模糊查询%放在开头不走索引,放在其它地方走索引。
select t.username,t.userpassword,t.sex,t.address,t.createtime from SYSTEM_USERINFO t where t.username like ‘root%’
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值