sql where条件后需要用日期进行索引

sqlwhere条件后面需要拼接日期条件,例如to_char(t.mydate)<'2012-08'.但是又想在t.mydate上建立索引提高查询速度。一旦用了to_ch... sql where 条件后面需要拼接日期条件,例如to_char(t.mydate)<'2012-08'.但是又想在t.mydate上建立索引提高查询速度。一旦用了to_char索引就失效了,请问大侠们怎么处理这个问题的。
还有个问题,先谢谢哈,我在一个number列上如aa建立了索引,为什么where后面拼接上and(aa<0 or aa>0)后,在plsqldeveloper中按F5查看性能时,没有按照aa进行索引查找
展开
 我来答
CJavaer
2012-09-18 · TA获得超过300个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:225万
展开全部
我可以发给你oracle语句调优和索引使用指南的文档,应该对你有帮助,你的邮箱发一下吧
另外回答你的问题
1.在索引列上使用函数是很少能使用索引的,即使使用了索引函数也很难保证走索引,这就是oracle的内部的机制,在cbo之后,oracle以cost作为最优plan的标准,这方面的内容要说的话就多了,你可以参看我给的文档,自己体会
2.在not,or类似这种非的查询是不走索引的,你可以用join来避免not的用法。
有问题继续追问
追问
您说的2是什么意思呢?怎么能用join代替not?可否举个例子
追答
1、not举例:
SELECT * FROM emp WHERE deptno NOT IN
(SELECT deptno FROM dept WHERE loc = 'DALLAS'); SELECT e.* FROM emp e WHERE NOT EXISTS (SELECT 1FROM dept WHERE deptno = e.deptno AND loc = 'DALLAS'); -->最高效(尽管下面的查询最高效,并不推荐使用,因为列loc使用了不等运算,当表dept数据量较大,且loc列存在索引的话,则此时索引失效,具体情况具体分析) SELECT e.* FROM emp e LEFT JOIN dept d ON e.deptno = d.deptno
WHERE d.loc 'DALLAS' ;

2、or举例
select * from emp where empid=1 or empid=2;
--->高效
select * from emp where empid=1
union all
select * from emp where empid=2;

sql的优化较实际情况而定,没有绝对的公式可以套,可能相同的执行计划在不同硬件环境下的效率是不同的,这方面还是有很多东西可以学的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华夏日长兴
2012-09-18 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3739万
展开全部
可以把 to_char(mydate) 也建立索引
追问
那to_char(mydate,'yyyy'),to_char(mydate,'yyyy-mm'),to_char(mydate,'yyyy--mm-dd')都要建立索引吗?
追答
哪个用的多就在哪个上建索引,索引并不是越多越好的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wooden954
2015-09-23 · TA获得超过1万个赞
知道大有可为答主
回答量:6135
采纳率:93%
帮助的人:831万
展开全部
了。批。。[批。;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2012-09-18 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4066万
展开全部
有2种方法

kao,写不上

给你发消息了。
追问
还有个问题,先谢谢哈,我在一个number列上如aa建立了索引,为什么where后面拼接上and(aa0)后,在plsqldeveloper中按F5查看性能时,没有按照aa进行索引查找
追答
or  很多情况下无法使用索引

另外,使用索引也是有条件的,比如你有100万数据,而99万符合条件,

这个时候肯定不会使用索引,

而会用全表扫描
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式