Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 PL/SQL创建具有索引的表_Oracle_Plsql - Fatal编程技术网

Oracle PL/SQL创建具有索引的表

Oracle PL/SQL创建具有索引的表,oracle,plsql,Oracle,Plsql,我有以下PL/SQL代码: DROP TABLE TAB_PARAM; BEGIN EXECUTE IMMEDIATE 'CREATE TABLE TAB_PARAM ( TABLE_OWNER VARCHAR2(30) NOT NULL, TABLE_NAME VARCHAR2(30) NOT NULL, COLUMN_NAME VARCHAR2(30) NOT NULL, PATTERN VARCHAR2(1024),

我有以下PL/SQL代码:

    DROP TABLE TAB_PARAM;

BEGIN
   EXECUTE IMMEDIATE 'CREATE TABLE TAB_PARAM
  (
     TABLE_OWNER  VARCHAR2(30) NOT NULL,
     TABLE_NAME   VARCHAR2(30) NOT NULL,
     COLUMN_NAME  VARCHAR2(30) NOT NULL,
     PATTERN VARCHAR2(1024),
     TYPE_METHODE VARCHAR2(30) NOT NULL,
     SEPARATEUR VARCHAR2(20),
     ID VARCHAR2(30),
    CONSTRAINT PK_TAB_PARAM PRIMARY KEY (TABLE_OWNER,TABLE_NAME,COLUMN_NAME) USING INDEX TABLESPACE IND_PARC_256M NOLOGGING
  )
  TABLESPACE TAB_PARC_256M NOLOGGING NOCACHE NOMONITORING NOPARALLEL';

commit;
END;
/
我不明白这部分:

CONSTRAINT PK_TAB_PARAM PRIMARY KEY (TABLE_OWNER,TABLE_NAME,COLUMN_NAME) USING INDEX TABLESPACE IND_PARC_256M NOLOGGING
也不包括:

TABLESPACE TAB_PARC_256M NOLOGGING NOCACHE NOMONITORING NOPARALLEL';
我知道它正在将ID设置为TAB_PARAM的主键,但是我没有得到索引部分。 有人能帮我理解这个代码吗?

编辑。来自甲骨文

如果Oracle数据库在强制主键约束之前包含一组唯一的值,则它将使用现有索引。现存的 索引可以定义为唯一或非唯一。当DML操作被激活时 执行时,将使用此现有密钥强制执行主键约束 索引

如果已经有索引命中pk列,oracle将使用它,否则oracle数据库将生成唯一的索引

所以,如果已经有该列的索引,您可以在oracle中创建一个不带索引的主键,指定索引是为了解决性能问题。表中索引的目的是更快地“读取”数据

索引是一个模式对象,它包含每个 显示在表或群集的索引列中,并提供 直接、快速地访问行

至于表空间,它是数据库对象存在的地方,因此当您创建一个表时,您可以指定希望它存在于哪个表空间中。在这里阅读更多

至于nologgin NOCACHE NOMONITORING,所以该表不会被记录在重做日志或缓存中,也与性能问题有关。

Edit。来自甲骨文

如果Oracle数据库在强制主键约束之前包含一组唯一的值,则它将使用现有索引。现存的 索引可以定义为唯一或非唯一。当DML操作被激活时 执行时,将使用此现有密钥强制执行主键约束 索引

如果已经有索引命中pk列,oracle将使用它,否则oracle数据库将生成唯一的索引

所以,如果已经有该列的索引,您可以在oracle中创建一个不带索引的主键,指定索引是为了解决性能问题。表中索引的目的是更快地“读取”数据

索引是一个模式对象,它包含每个 显示在表或群集的索引列中,并提供 直接、快速地访问行

至于表空间,它是数据库对象存在的地方,因此当您创建一个表时,您可以指定希望它存在于哪个表空间中。在这里阅读更多


至于NOLOGGING NOCACHE NOMONITORING,因此不在重做日志或缓存中记录表,这也与性能问题有关。

对于主键oracle,它会在表空间中隐式创建唯一索引。 这部分
使用索引表空间
允许我们为这个隐式索引指示表空间

NOLOGGING
-通过最少的日志记录修改数据(以将新数据块标记为无效并记录字典更改)

NOCACHE
-Oracle不在缓冲区缓存中存储块

NOPARALLEL
-此表上不允许并行执行。(默认值)


NOMONITORING
-禁用统计信息收集。现在不推荐使用。还有其他机制可以收集主键的统计信息,oracle会在表的表空间中隐式创建唯一的索引。 这部分
使用索引表空间
允许我们为这个隐式索引指示表空间

NOLOGGING
-通过最少的日志记录修改数据(以将新数据块标记为无效并记录字典更改)

NOCACHE
-Oracle不在缓冲区缓存中存储块

NOPARALLEL
-此表上不允许并行执行。(默认值)


NOMONITORING
-禁用统计信息收集。现在不推荐使用。还有其他收集统计数据的机制

有时您可以以一次性方式创建表,例如,您需要通过sqlloader从文件中读取数据并插入表中,然后从表中选择所有记录。此操作不需要索引,也不需要主键。无论如何,在创建表时创建主键总是好的,Oracle将为您创建索引。自创建表以来,您可以随时创建更多索引。现在假设您想对一个不是主键的字段使用where条件更新表,那么在该字段上创建索引可能是一个更好的决定。此外,当您创建索引或表时,您可以关联表空间(以前创建的),并且可以很好地将表空间与索引分开。所有这些操作都是DDL语句。在Oracle中,您可以使用这些查询检查数据文件、表和索引
select*from dba\u data\u files;从dba_表中选择*;从dba_索引中选择*

有时您可以以一次性方式创建表,例如,您需要通过sqlloader从文件中读取数据并插入到表中,然后您将从表中选择所有记录。此操作不需要索引,也不需要主键。无论如何,在创建表时创建主键总是好的,Oracle将为您创建索引。自创建表以来,您可以随时创建更多索引。现在假设您想对一个不是主键的字段使用where条件更新表,那么在该字段上创建索引可能是一个更好的决定。此外,当您创建索引或表时,您可以关联表空间(以前创建的),并且可以很好地将表空间与索引分开。所有这些操作都是DDL语句。在Oracle中,您可以使用这些查询检查数据文件、表和索引
select*from dba\u data\u files;从dba_表中选择*;从dba_索引中选择*

检查此项您是否查看了或的文档?你为什么要用