建以下两个索引
索引1:A, B, C, D, E, F, G
索引2:B
select *
from tbl1 where A='I' and B='A' and C>'D' and D>=0
and E ='A'
and F=:p and G=:q;
为什么执行以上语句时使用第二个索引,不使用第一个索引
我本想让他用第一个复合索引的
(如果索引2为C,则执行以上语句使用第一个索引)
索引1:A, B, C, D, E, F, G
索引2:B
select *
from tbl1 where A='I' and B='A' and C>'D' and D>=0
and E ='A'
and F=:p and G=:q;
为什么执行以上语句时使用第二个索引,不使用第一个索引
我本想让他用第一个复合索引的
(如果索引2为C,则执行以上语句使用第一个索引)
解决方案 »
- oracle 错误 959 解决方法及疑问……
- 执行建立作业的语句有报错!
- 求助:Oracle 中远程数据库查询,无响应,急...
- 怎样在oracle里捕捉要更新的内容
- 新手请教各位,我如何知道服务器端Oracle数据库使用了什么字符集来保存数据?(没有看到V$NLS_PARAMETERS系统表)
- 哪位朋友知道这个问题--连接ORACLE的时候,反回ORA-12638:凭证检索失败。
- 数据的加密与解密!!!
- 在pb中如何修改oracle登陆密码 ?
- 请教ORACLE高手一个问题
- rman的0级备份和1级备份的中间做一个全备(非0级)能恢复吗?
- [菜鸟问题]这个UPDATE为何效率如此低???
- oracle触发器求助!!!!
B CHAR(1)
C CHAR(1)
D NUMBER(12,2)
E CHAR(4)
F CHAR(8)
G CHAR(4)
索引提示格式:在select关键字之后使用/*+... */
你的查询语句就变为:
select /*+index(索引1的名称)*/ *
from tt where A='I' and B='A' and C>'D' and D>=0 and E ='A' and F='e' and G='f';
from tbl1 where A='I' and B='A' and C>'D' and D>=0 and E ='A' and F='e' and G='f';
select /*+index(索引1的名称)*/ *
from tbl1 where A='I' and B='A' and C>'D' and D>=0
and E ='A'
and F=:p and G=:q;
其实是from viewname现在是
在使用视图时使用hint不管用,而且在创建索引时也不能使用hint,因为很多地方使用该视图时还有很多where条件不相同