相当于SQL Server的Oracle包含要索引的列
Oracle是否允许我包含要索引的列(如SQL Server相当于SQL Server的Oracle包含要索引的列,sql,oracle,Sql,Oracle,Oracle是否允许我包含要索引的列(如SQL Server中的include子句创建索引) 谢谢。否。Oracle中的索引要么在索引中包含该列,要么不包含该列 但是,根据您试图解决的问题,索引组织的表可能是Oracle中合适的类似表 CREATE TABLE test ( a VARCHAR2(400 char) NOT NULL PRIMARY KEY, b NUMBER(33) NOT NULL ); CREATE TABLE test_2 (
中的include
子句创建索引
)
谢谢。否。Oracle中的索引要么在索引中包含该列,要么不包含该列 但是,根据您试图解决的问题,索引组织的表可能是Oracle中合适的类似表
CREATE TABLE test (
a VARCHAR2(400 char) NOT NULL PRIMARY KEY,
b NUMBER(33) NOT NULL
);
CREATE TABLE test_2 (
a VARCHAR2(400 char) NOT NULL,
b NUMBER(33) NOT NULL
);
CREATE INDEX ix_test_2 ON test_2(a, b);
explain plan for
select a,b from test where a in ('a', 'b', 'c');
--| 0 | SELECT STATEMENT(50)
--| 1 | INLIST ITERATOR
--| 2 | TABLE ACCESS BY INDEX ROWID
--|* 3 | INDEX UNIQUE SCAN
explain plan for
select a,b from test_2 where a in ('a', 'b', 'c');
--| 0 | SELECT STATEMENT
--| 1 | INLIST ITERATOR
--|* 2 | INDEX RANGE SCAN
所以,在我看来,至少在Oracle12c中是这样的,在索引中包括b列可以防止表访问->更快