oracle 函数索引问题

Chen大猩猩 发布于 2015/06/01 11:50
阅读 271
收藏 0
   select* from tt where 1=1
          AND TO_CHAR(register_date, 'yyyyMMdd') >= '20150501'
   AND TO_CHAR(register_date, 'yyyyMMdd') <= '20150509';
不走索引
   select* from tt where 1=1
          AND TO_CHAR(register_date, 'yyyyMMdd') >= TO_CHAR('20150501')
   AND TO_CHAR(register_date, 'yyyyMMdd') <=TO_CHAR ('20150509');
走索引
 
 
建索引用的是TO_CHAR(register_date, 'yyyyMMdd')  
为什么后边的字符串要加TO_CHAR ?
加载中
0
C
Chen大猩猩
@红薯  ,来帮帮看看呗,都不回答我
红薯
红薯
oracle 我不会啊
0
jolphin
jolphin

两种的写法应该是一样的,这里没必要用函数索引吧。

SELECT * FROM TT WHERE 1 = 1
AND REGISTER_DATE >= TO_DATE('20150501','yyyymmdd')
AND REGISTER_DATE <= TO_DATE('20150509','yyyymmdd');

0
如比如比
如比如比
看下执行计划不行么,类型不一致吧
0
a
addy_wh
应该类型做了自动转换。trace sql 下。
返回顶部
顶部