我的SQL语句:
select count(*) from mytable where a='xxx' and substr(b,1,4)='xx' and
substr(c,1,2)='xxxx'
其中mytable中有数据几百万,字段a为索引字段,我想问下的是,如果把a='xxxx'索引字段的秩序调到后面或是中间,对查找速度有没有影响,应该怎样排才能达到最好的最快速度的效果!!谢谢!
select count(*) from mytable where a='xxx' and substr(b,1,4)='xx' and
substr(c,1,2)='xxxx'
其中mytable中有数据几百万,字段a为索引字段,我想问下的是,如果把a='xxxx'索引字段的秩序调到后面或是中间,对查找速度有没有影响,应该怎样排才能达到最好的最快速度的效果!!谢谢!
但是,如果是CBO的话,就没有必要的了。放在哪里都差不多了。
create index ix_c_mytable on mytable(substr(c,1,2));
1.你这条语句的问题主要出在 substr函数的使用上,对索引列的任何
函数操作都将导致索引失效,除非你建了基于函数的索引(上面朋友写
的漏了 function 关键字) 2.启用sqltrace看看Oracle的查询计划.
alter session set sql_trace=true;
3. RBO(Rule Based Optimize):基于规则的优化
CBO(Code-Based Optimize):基于成本的优化
Oracle 推荐使用后者.