我在select中指定了索引,Oracle却不承认,请问是什么原因?select /*+index(AALUSS IAALUSS2*/ * from aaluss where
c_agencyno = '123'
and c_netname = '456'
and c_cityno = '456'分析结果
Optimizer goal Choose
SELECT STATEMENT, GOAL = CHOOSE
TABLE ACCESS BY INDEX ROWID GYRX AALUSS
INDEX RANGE SCAN GYRX IAALUSS1
我的数据结构
-- Create table
create table AALUSS
(
C_AGENCYNO CHAR(3),
C_NETNO VARCHAR2(9),
C_NETNAME VARCHAR2(36),
C_CITYNO VARCHAR2(4),
C_NETADDRESS VARCHAR2(200),
C_NETZIPCODE VARCHAR2(9),
C_NETCONTACT VARCHAR2(18),
C_NETPHONE VARCHAR2(36),
C_NETFAXNO VARCHAR2(36),
D_NETREGDATE DATE,
C_NETSTATUS CHAR(1),
C_TANO CHAR(2)
);
-- Create indexes
create index IAALUSS1 on AALUSS (C_NETNAME,C_CITYNO);
create index IAALUSS2 on AALUSS (C_AGENCYNO,C_NETNO,C_NETNAME,C_CITYNO);
c_agencyno = '123'
and c_netname = '456'
and c_cityno = '456'分析结果
Optimizer goal Choose
SELECT STATEMENT, GOAL = CHOOSE
TABLE ACCESS BY INDEX ROWID GYRX AALUSS
INDEX RANGE SCAN GYRX IAALUSS1
我的数据结构
-- Create table
create table AALUSS
(
C_AGENCYNO CHAR(3),
C_NETNO VARCHAR2(9),
C_NETNAME VARCHAR2(36),
C_CITYNO VARCHAR2(4),
C_NETADDRESS VARCHAR2(200),
C_NETZIPCODE VARCHAR2(9),
C_NETCONTACT VARCHAR2(18),
C_NETPHONE VARCHAR2(36),
C_NETFAXNO VARCHAR2(36),
D_NETREGDATE DATE,
C_NETSTATUS CHAR(1),
C_TANO CHAR(2)
);
-- Create indexes
create index IAALUSS1 on AALUSS (C_NETNAME,C_CITYNO);
create index IAALUSS2 on AALUSS (C_AGENCYNO,C_NETNO,C_NETNAME,C_CITYNO);
解决方案 »
- 在oracle中添加24小时制的时间
- 建dblink为什么会自动带上后缀呢?
- [高分][急]紧急求个SQL语句!请高手支招!谢谢!
- 高手们http://192.100.2.159:1158/em/console/logon/logon这个oracle管理的登陆的密码在那设置上的,我现在等不上去了
- 用LIST建好的分区了,在给分区加索引时提示无效的表分区方法
- a字段里有值为null的还有为空字符串的,为何用where取不出来?
- 100分,请教哪位兄台能提供oracle存储过程的教程或者语法讲解,多谢
- IMP的问题,数据量太大了,导入时又慢,而且会报错!~高分求助
- 在VC++用ADO,求连接远程ORACLE数据库的连接字符串?
- 如何设置ORACLE中的sequences的初始值,因为我不想从1开始增加,而是想从动态值开始。
- 第一次用toad连oracle,有点问题
- 改写SQLServer的触发器到Oracle,头疼死了!!!
已连接。
SQL> create table AALUSS
2 (
3 C_AGENCYNO CHAR(3),
4 C_NETNO VARCHAR2(9),
5 C_NETNAME VARCHAR2(36),
6 C_CITYNO VARCHAR2(4),
7 C_NETADDRESS VARCHAR2(200),
8 C_NETZIPCODE VARCHAR2(9),
9 C_NETCONTACT VARCHAR2(18),
10 C_NETPHONE VARCHAR2(36),
11 C_NETFAXNO VARCHAR2(36),
12 D_NETREGDATE DATE,
13 C_NETSTATUS CHAR(1),
14 C_TANO CHAR(2)
15 );表已创建。SQL> create index IAALUSS1 on AALUSS (C_NETNAME,C_CITYNO);索引已创建。SQL> create index IAALUSS2 on AALUSS (C_AGENCYNO,C_NETNO,C_NETNAME,C_CITYNO);索引已创建。SQL> set autotrace traceonly explainSQL> select /*+index(AALUSS IAALUSS2)*/ * from aaluss where
2 c_agencyno = '123'
3 and c_netname = '456'
4 and c_cityno = '456'
5 /Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=210)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'AALUSS' (Cost=1 Card=1 Bytes=210)
2 1 INDEX (RANGE SCAN) OF 'IAALUSS2' (NON-UNIQUE) (Cost=2 Card=1)
select /*+index(AALUSS IAALUSS2)*/ * from aaluss where <- me看到没? 少了一个 ) 号~ 呵呵