表:
CREATE TABLE TABLE1
(
KEIYUID CHAR(16) NOT NULL,
KOTEINO CHAR(10) NOT NULL,
KBN CHAR(3) NOT NULL,
SETUBAN NUMBER(3,0) NOT NULL,
KTYP CHAR(1) NOT NULL,
CONSTRAINT PK_TABLE1 PRIMARY KEY (KOTEINO, SETUBAN)
)
索引:
CREATE INDEX TABLE1_INDEX4
ON DES_UPKEI
(KOTEINO, KBN)
和
CREATE INDEX TABLE1_INDEX5
ON DES_UPKEI
(KOTEINO, SETUBAN, KBN)因为表和索引都是原先的人建好的,现在拿过来用而已
看了执行计划,发现第一个语句没用索引
再次谢谢各位!
CREATE TABLE TABLE1
(
KEIYUID CHAR(16) NOT NULL,
KOTEINO CHAR(10) NOT NULL,
KBN CHAR(3) NOT NULL,
SETUBAN NUMBER(3,0) NOT NULL,
KTYP CHAR(1) NOT NULL,
CONSTRAINT PK_TABLE1 PRIMARY KEY (KOTEINO, SETUBAN)
)
索引:
CREATE INDEX TABLE1_INDEX4
ON DES_UPKEI
(KOTEINO, KBN)
和
CREATE INDEX TABLE1_INDEX5
ON DES_UPKEI
(KOTEINO, SETUBAN, KBN)因为表和索引都是原先的人建好的,现在拿过来用而已
看了执行计划,发现第一个语句没用索引
再次谢谢各位!
解决方案 »
- Oracle 怎样从老版本升级(upgrade)到新版本?
- select to_char('25MAR12', 'DDMONYY') from dual;
- 冰天雪地跪地求教
- 求一个oracol sql写法
- Oracle 追加大字段列的数据
- 我在sqlplus里insert了一条数据,在sqlplus可以select看到,为什么在worksheet和里select看不到?
- 那位大哥 对比sql server 讲讲 oracle 的用法,以WINDOWS下为例。详情请进
- 多个表能调用同一个序列号吗
- 查询视图比查询表效率一样吗?-急
- 如何取分组后的每组的最大值的问题。
- sqlplus连oracle,速度非常慢!为什么?
- 求救:查询问题!!!!
/*****************************************
已经有两个索引:
1.KOTEINO,SETUBAN,KBN
2.KOTEINO,KBN现有两个查询语句:
1.SELECT KOTEINO,SETUBAN,KBN FROM TABLE1 WHERE KOTEINO = 123 AND KBN = 4
2.SELECT KOTEINO,SETUBAN,KBN FROM TABLE1
WHERE KOTEINO = 123 AND SETUBAN = 2 AND KBN = 4
*****************************************/例如索引1名字为idx_1,索引2名字为idx_2查询可以这样写:
1:
SELECT /*+ index(a idx_2) */ KOTEINO,SETUBAN,KBN FROM TABLE1 a
WHERE KOTEINO = 123 AND KBN = 4
2.
SELECT /*+ index_ffs(a idx_1) */ KOTEINO,SETUBAN,KBN FROM TABLE1 a
WHERE KOTEINO = 123 AND SETUBAN = 2 AND KBN = 4 语句1表示强制走索引扫描,先扫描索引再扫描表,这样加快速度.
语句2表示只走快速索引扫描,而不扫描表,由于select的三个字段都在索引中,所以只扫描索引而不扫描表,速度更快.
注意:并非Oracle每次的选择都是最优的,并非任何时候索引扫描都比全表扫描快.