Oracle PL/SQL创建具有索引的表
我有以下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),
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_索引中选择*代码>检查此项您是否查看了或的文档?你为什么要用