[英]Oracle equivalent to SQL Server included columns to index
Oracle 是否讓我包含要索引的列(如CREATE INDEX
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 (
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 列會阻止表訪問 -> 更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.