优化优化!!!!

fdzxb 2004-09-26 11:03:01
数据表ITF_TOTAL才17万数据,执行以下语句平均要10秒左右,对RESULT和
flag做了一个索引,效果不好,请问各位大侠如何优化???

SELECT *
FROM ITF_TOTAL
WHERE ((RESULT='-2' and flag = 0)
or (substr(result,1,1)<>'-' and flag = 0))
and (data_target='CCAT' or data_send='CCAT') and rownum<2
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2004-09-27
  • 打赏
  • 举报
回复
substr(result,1,1)这个用不上索引,如果想使用的话,要建立substr(result,1,1)的函数索引
bzszp 2004-09-27
  • 打赏
  • 举报
回复
try:
SELECT *
FROM ITF_TOTAL
WHERE (RESULT='-2' or result not like '-%')
and flag=0 and (data_target='CCAT' or data_send='CCAT') and rownum<2;

data_target,data_send列也创建索引
leoiong 2004-09-27
  • 打赏
  • 举报
回复
觉得还是使用函数索引比较实在些,不能使用不等号,可以用《 or 》来代替
shawnzhao 2004-09-27
  • 打赏
  • 举报
回复
SELECT /*+ FIRST_ROWS(1) */ * from ...,可能会快一点
hollyzp 2004-09-26
  • 打赏
  • 举报
回复
substr(result,1,1)<>'-'
不要对Result用substr函数,也不要用不等号,根据你的数据库设计改造成等于效果比较明显。
另外Result字段的结果有非数字的吗?为什么不用NUMBER型数据?

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧