Oracle是否允许我将索引包含在列中(如INCLUDE
中的SQL Server CREATE INDEX
子句)?
感谢。
答案 0 :(得分:5)
没有。 Oracle中的索引要么包含索引本身的列,要么不包括。
但是,根据您尝试解决的问题,索引组织表可能是Oracle中的相应模拟表。
答案 1 :(得分:0)
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列可以防止表访问->更快。