一条SQL语句调优,急急

tandy_cs_201 2007-06-22 02:18:55
Select ifdl.ifdl_dp_number,
ifdh.ifdh_operations_type
from ifdpline ifdl, ifdphead ifdh
where ifdl.ifdl_pid = ifdh.ifdh_id
and ifdl.ifdl_dp_number like 'KMTC ULSAN/701S/KMTC/E%'
and ifdl.ifdl_org_id = '139'
and (ifdl.ifdl_cust_code = 'ESSA00100489' or ifdl.ifdl_vendor_code = 'ESSA00100489')
and exists(select 1
from FEXPENSE fexp, FCONSIGN fcsg
where fexp.FEXP_CONSIGN_ID = fcsg.FCSG_CONSIGN_ID
and ('F' || fexp.fexp_expense_id || 'C' = ifdl.ifdl_dp_line_number or 'F' || fexp.fexp_expense_id = ifdl.ifdl_dp_line_number))

这个语句的and ('F' || fexp.fexp_expense_id || 'C' = ifdl.ifdl_dp_line_number or 'F' || fexp.fexp_expense_id = ifdl.ifdl_dp_line_number)导致了索引失效,有什么写法可以满足该业务并提高效率,谢谢大家
...全文
136 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tandy_cs_201 2007-06-22
  • 打赏
  • 举报
回复
谢谢bobfang(匆匆过客)
tandy_cs_201 2007-06-22
  • 打赏
  • 举报
回复
dbms_status.gather_table_stats('TABLEOWNERNAME','FEXPENSE')这句话是什么意思
bobfang 2007-06-22
  • 打赏
  • 举报
回复
给用户授予create indextype和query rewrite的权限;检查系统参数,query_rewrite_enabled要为true,query_rewrite_integrity要为enforced。
然后用户执行
create index INDEXNAME on fexpense('F'|| fexp_expense_id );
exec dbms_status.gather_table_stats('TABLEOWNERNAME','FEXPENSE')
tandy_cs_201 2007-06-22
  • 打赏
  • 举报
回复
to bobfang(匆匆过客) :||是没法用索引的,你能告诉我怎么建法吗
bobfang 2007-06-22
  • 打赏
  • 举报
回复
建函数索引,如果版本是9i或更高。
tandy_cs_201 2007-06-22
  • 打赏
  • 举报
回复
注:fexp.fexp_expense_id是NUMBER型,ifdl.ifdl_dp_line_number是VARCHAR2,是当初别人设计的,晕死,大家有什么办法,帮帮忙啊,很急

17,089

社区成员

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

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