Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相当于SQL Server的Oracle包含要索引的列_Sql_Oracle - Fatal编程技术网

相当于SQL Server的Oracle包含要索引的列

相当于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 (

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 (
    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列可以防止表访问->更快