Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle SQL主键上声明附加索引时会发生什么情况?_Sql_Oracle_Indexing_Primary Key - Fatal编程技术网

在Oracle SQL主键上声明附加索引时会发生什么情况?

在Oracle SQL主键上声明附加索引时会发生什么情况?,sql,oracle,indexing,primary-key,Sql,Oracle,Indexing,Primary Key,我有一个多部分的问题: 我的旅程始于我试图弄清楚在Oracle SQL中是否可以使用主键的降序/升序 在CREATE TABLE MYTAB(ID INT PRIMARY KEY DESC)中似乎没有语法或创建表MYTAB(ID INT,约束主键(ID DESC)) 后来我了解到Oracle隐式地为主键创建索引,以帮助强制执行其约束。我想我可以为它创建一个索引,并使索引递减 在MYTAB上创建索引MYIND(ID DESC) 这是有效的,当我进行查询以查看存在哪些索引时,我得到了以下结果: &g

我有一个多部分的问题:

我的旅程始于我试图弄清楚在Oracle SQL中是否可以使用主键的降序/升序

CREATE TABLE MYTAB(ID INT PRIMARY KEY DESC)中似乎没有语法
创建表MYTAB(ID INT,约束主键(ID DESC))

后来我了解到Oracle隐式地为主键创建索引,以帮助强制执行其约束。我想我可以为它创建一个索引,并使索引递减

在MYTAB上创建索引MYIND(ID DESC)

这是有效的,当我进行查询以查看存在哪些索引时,我得到了以下结果:

> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'MYTAB';

INDEX_NAME
------------------------------
SYS_C0011939
MYIND
我看到隐式创建的索引和我自己的索引都在那里。。。我试图通过在表创建期间为主键创建索引,看看是否可以摆脱隐式创建的索引:

 CREATE TABLE MYTAB (ID INT PRIMARY KEY USING INDEX (CREATE INDEX MYIND ON MYTAB (ID ASC)));
这起到了作用:

> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'MYTAB';

INDEX_NAME
------------------------------
MYIND
有趣的是,使用DESC作为索引方向会产生以下错误:

指定的索引不能用于强制约束。


因此,我的问题是:

  • 这是否意味着在Oracle SQL中不能降序主键
  • 如果是,为什么DESC不允许强制执行主键约束
  • 在我的第一个示例中,单独创建索引的行为/效果是什么?DESC在那里工作。。。当主键上有两个索引时会发生什么?它的功能是否与另一个DB允许DESC作为主键规范的一部分的方式相同
    Oracle将索引创建为双链接列表,以便在需要时按升序或降序遍历每个索引

    但是,对于多列索引,您可以添加
    DESC
    关键字,使一列或多列按降序相对于其他列存储


    这种方法的用处有限,不经常使用,但当您在特定查询中创建一个专门支持特定
    ORDER BY
    子句的索引时,这种方法非常有用列按降序排序。

    为什么您认为需要DESC索引?我正在编写一个工具,它将为一组不同的数据库生成语句-我正在研究允许用户指定升序/降序选项,并了解每个不同的db实现如何处理升序/降序索引。好像甲骨文没有必要像你说的那样