美文网首页linux redhat & Oracle
普通索引列和主健列一样导致的问题

普通索引列和主健列一样导致的问题

作者: 重庆思庄 | 来源:发表于2019-01-16 16:09 被阅读0次

SQL> CREATE TABLE EMP AS SELECT * FROM employees;

SQL> desc emp;

Name Null? Type

----------------------------------------- -------- ----------------------------

EMPLOYEE_ID NUMBER(6)

FIRST_NAME VARCHAR2(20)

LAST_NAME NOT NULL VARCHAR2(25)

EMAIL NOT NULL VARCHAR2(25)

PHONE_NUMBER VARCHAR2(20)

HIRE_DATE NOT NULL DATE

JOB_ID NOT NULL VARCHAR2(10)

SALARY NUMBER(8,2)

COMMISSION_PCT NUMBER(2,2)

MANAGER_ID NUMBER(6)

DEPARTMENT_ID NUMBER(4)

SQL> create index idx_emp_id on emp(employee_id,last_name,email);

SQL> alter table emp add constraint pk_emp_id_name_email primary key(employee_id,last_name,email);

重庆-郑全(24803366) 15:16:10

看到确实只有一个索引:

SQL> select index_name,uniqueness from user_indexes where table_name='EMP';

INDEX_NAME UNIQUENES

------------------------------ ---------

IDX_EMP_ID NONUNIQUE

马上删除索引,报错:

SQL> drop index IDX_EMP_ID;

drop index IDX_EMP_ID

*

ERROR at line 1:

ORA-02429: cannot drop index used for enforcement of unique/primary key

索引和主健一样导致的问题

看来主健后建把索引先占住了,先停约束,再删除索引

SQL> alter table emp disable constraint pk_emp_id_name_email;

Table altered.

SQL> drop index IDX_EMP_ID;

Index dropped.

SQL> alter table emp enable constraint pk_emp_id_name_email;

Table altered.

SQL> select index_name,uniqueness from user_indexes where table_name='EMP';

INDEX_NAME UNIQUENES

------------------------------ ---------

PK_EMP_ID_NAME_EMAIL UNIQUE

主健对应的索引又回来了

SQL> create index idx_emp_id on emp(employee_id,last_name,email);

Index created.

SQL> select index_name,uniqueness from user_indexes where table_name='EMP';

INDEX_NAME UNIQUENES

------------------------------ ---------

IDX_EMP_ID NONUNIQUE

PK_EMP_ID_NAME_EMAIL UNIQUE

现在是两个索引了

重庆思庄

相关文章

  • 普通索引列和主健列一样导致的问题

    SQL> CREATE TABLE EMP AS SELECT * FROM employees; SQL> de...

  • 【Mysql】查询优化——减少回表操作

    1 聚集索引和非聚集索引(普通索引)   聚集索引:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一...

  • 高性能索引策略

    索引的优点: 索引策略: 独立的列 前缀索引和索引选择性 多列索引

  • 索引类型

    索引类型有: 主键索引; 唯一索引; 普通索引; 全文索引; 多列索引;

  • MySQL索引简介

    索引的分类 1. 普通索引和唯一索引 普通索引是mysql 中的基本索引类型,允许在自定义索引的列中插入重复值和空...

  • mysql索引

    索引种类 普通索引:仅加速查询 唯一索引:加速查询 + 列值唯一(可以有null) 主键索引:加速查询 + 列值唯...

  • MySQL 索引基本知识

    索引的分类 普通索引和唯一索引普通索引是基本索引类型,可以在列中插入重复值和空值唯一索引,不允许空值和重复值. 单...

  • MySQL索引管理

    索引分类 聚集索引 非聚集索引单列索引一个索引只包含一个列多列索引(复合索引)一个索引包含多个列唯一索引索引列的值...

  • 索引扫盲

    索引 是对数据库中一列或多列的值进行排序的一种结构 索引的种类: 普通索引 唯一索引 全文索引 - 替代 Like...

  • 索引失效的情况有哪些

    虽然你这列上建了索引,查询条件也是索引列,但最终执行计划没有走它的索引。下面是引起这种问题的几个关键点。 列与列对...

网友评论

    本文标题:普通索引列和主健列一样导致的问题

    本文链接:https://www.haomeiwen.com/subject/ekvmdqtx.html