最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

oracle创建主键反向索引

来源:懂视网 责编:小采 时间:2020-11-09 07:18:11
文档

oracle创建主键反向索引

oracle创建主键反向索引:前言: 今天在学习oracle索引,看到创建反向索引就在想那如何在主键上创建反向索引嘞? 思路:1、 是不是在添加主键时使用reverse关键字: SQL alter table emp2 add constraint pk_emp2 primary key (empno) reverse;alt
推荐度:
导读oracle创建主键反向索引:前言: 今天在学习oracle索引,看到创建反向索引就在想那如何在主键上创建反向索引嘞? 思路:1、 是不是在添加主键时使用reverse关键字: SQL alter table emp2 add constraint pk_emp2 primary key (empno) reverse;alt

前言: 今天在学习oracle索引,看到创建“反向索引”就在想那如何在主键上创建反向索引嘞? 思路:1、 是不是在添加主键时使用reverse关键字: SQL alter table emp2 add constraint pk_emp2 primary key (empno) reverse;alter table emp2 add constraint p

前言:今天在学习oracle索引,看到创建“反向索引”就在想那如何在主键上创建反向索引嘞?

思路:1、是不是在添加主键时使用reverse关键字:

SQL> alter table emp2 add constraint pk_emp2 primary key (empno) reverse;
alter table emp2 add constraint pk_emp2 primary key (empno) reverse
 *
ERROR at line 1:
ORA-14125: REVERSE/NOREVERSE may not be specified in this context
从上面看出明显不是这样创建的。

2、看了看文档也没有这样用的方法,但是直接使用lter table emp2 add constraint pk_emp2 primary key (empno)肯定是不对的。

3、好像在创建主键时可以指定一个索引。是不是可以先创建反向索引,然后在创建主键是指定索引呢?那就试一试呗:

SQL> create unique index re_emp2no_idx on emp2(empno) reverse;

Index created.

SQL> alter table emp2 add constraint pk_emp2 primary key (empno) USING INDEX re_emp2no_idx;

Table altered.

SQL> 
SQL> select * from emp2 where empno = 7369;

 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
 7369 SMITH CLERK 7902 17-DEC-80 1000 20


Execution Plan
----------------------------------------------------------
Plan hash value: 478151573

---------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 87 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| EMP2 | 1 | 87 | 1 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | RE_EMP2NO_IDX | 1 | | 0 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

 2 - access("EMPNO"=7369)

SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME from user_indexes;

INDEX_NAME INDEX_TYPE TABLE_NAME
------------------------------ --------------------------- ------------------------------
RE_EMP2NO_IDX NORMAL/REV EMP2
USER_INDEX_TBS FUNCTION-BASED NORMAL EMP
PK_EMP NORMAL EMP
PK_DEPT NORMAL DEPT 
 
SQL> SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE 
FROM all_constraints WHERE TABLE_NAME = 'EMP2';

TABLE_NAME CONSTRAINT_NAME C
------------------------------ ------------------------------ -
EMP2 PK_EMP2 P
从上面看出思路对了,也成功创建主键反向索引。

注意:在创建索引的时候一定要创建唯一索引(unique index),否则在使用索引查询时用的是 index range scan

文档

oracle创建主键反向索引

oracle创建主键反向索引:前言: 今天在学习oracle索引,看到创建反向索引就在想那如何在主键上创建反向索引嘞? 思路:1、 是不是在添加主键时使用reverse关键字: SQL alter table emp2 add constraint pk_emp2 primary key (empno) reverse;alt
推荐度:
标签: 创建 学习 今天
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top