我正在创建一个包含以下脚本的表(我使用了使用索引)。
CREATE TABLE TABLE1 (
C1 VARCHAR2(2 CHAR) NOT NULL ENABLE,
C2 VARCHAR2(1 CHAR) NOT NULL ENABLE,
CONSTRAINT TABLE_PK PRIMARY KEY (C1) USING INDEX TABLESPACE SFE_I1
)
TABLESPACE SFE_D1;
在上面的查询索引中会创建哪个列?
CREATE INDEX IDX_TABLE ON TABLE1 (C1) TABLESPACE SFE_I1;
如果我使用上面的创建索引查询创建索引,它将为C1列创建索引。但这两个脚本之间有什么区别。
如果我同时运行这个查询,会发生什么。建议的方法是什么?
如果我的创建表脚本包含复合主键,并且我正在使用USING INDEX关键字,那么将如何创建索引(它将为所有复合列创建单个索引)
答案 0 :(得分:1)
对于这个问题,create table
语句的重要部分是CONSTRAINT TABLE_PK PRIMARY KEY (C1) USING INDEX TABLESPACE SFE_I1
。让我们分解并理解它:
CONSTRAINT TABLE_PK
您正在创建名为table_pk
的约束。
PRIMARY KEY
此约束是主键
(C1)
在c1
栏
USING INDEX TABLESPACE SFE_I1
主键隐式需要创建索引,以便有效地搜索会违反约束的重复项。与显式创建的索引(例如,您的第二个语句)一样,索引将在用户的默认表空间上创建,这并不总是最好的主意。 using index tablespace
语法允许您定义要使用的表空间,就像创建索引时使用它一样。
如果您尝试运行两个语句,则第二个语句会失败,因为c1
已经被第一个语句编入索引。