假设一个表中的某一列上含有延迟约束(比方 NOT NULL)而且这一列上有索引,那么无论这个约束当前是延迟状态或是被显式地设置为马上使用,我们都不会考虑使用这一列上的索引。比如:
CREATE TABLE tdc
( x INT CONSTRAINT x_not_null NOT NULL DEFERRABLE INITIALLY DEFERRED RELY,
y INT CONSTRAINT y_not_null NOT NULL,
z VARCHAR2(30)
);
CREATE INDEX t_idx ON tdc(x);
SET CONSTRAINTS ALL IMMEDIATE; <-- 将全部延迟约束置为马上使用
SET AUTOTRACE TRACEONLY EXPLAIN
SELECT COUNT(1) FROM tdc; <-- 索引不会被使用
Execution Plan
----------------------------------------------------------
Plan hash value: 2532426293