簡體   English   中英

相當於 SQL Server 的 Oracle 包含要索引的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM