0

1/在表中,与 有何index I1 on T(col1, col2)不同index I2 on T(col2, col1)?我们可以同时创建吗?举个例子Unique Index

索引跳过扫描似乎表明列顺序很重要,这意味着 I1 可能与 I2 不同。

在另一个文本中,我看到了

CREATE TABLE INVOICES
(ID NUMBER(11),
INVOICE_DATE DATE,
CONSTRAINT UN_ID UNIQUE(ID, DATE) USING INDEX(CREATE INDEX I_INVOICES ON INVOICES(ID, INVOICE_DATE)),
CONSTRAINT UN_DATE UNIQUE(DATE, ID) USING INDEX I_INVOICES);

意思是Unique constraints (col1, col2)(col2, col1)都使用相同的index (col1, col2)

每个人的一些见解?我的问题在于 我们何时选择一个而不是另一个?

但是关于它们何时共存它们是两个不同的索引/对象吗?顺序重要吗?为什么该示例对两者都使用相同的索引?因为顺序很重要,除了 (col1, col2) 创建另一个索引 (col2, col1) 会更好吗?

2/ 关于同一个问题:为什么我们使用 justCREATE INDEX和 not CREATE UNIQUE INDEX?在什么情况下我们使用CREATE UNIQUE INDEX

4

1 回答 1

0

复合索引的排序键

请遵循以下指南对复合索引中的键进行排序:

创建索引,以便 WHERE 子句中使用的键构成前导部分。如果在 WHERE 子句中更频繁地使用某些键,那么请务必创建索引,以便更频繁地选择的键构成前导部分,以允许仅使用这些键的语句使用索引。如果所有键在 WHERE 子句中的使用频率相同,那么在 CREATE INDEX 语句中将这些键从选择性最高到选择性最低的顺序排列可以最好地提高查询性能。如果所有键在 WHERE 子句中的使用频率相同,但数据在其中一个键上进行物理排序,则将该键首先放在复合索引中。

来自:https ://docs.oracle.com/cd/B10501_01/server.920/a96533/data_acc.htm#2174

2/关于同一个问题:为什么我们只使用 CREATE INDEX 而不是 CREATE UNIQUE INDEX ?在哪种情况下我们使用 CREATE UNIQUE INDEX ?

它表示索引列中的值组合必须是唯一的。

来自:http ://www.techonthenet.com/oracle/indexes.php

请记住:如果您在表上创建唯一键,那么也会自动创建唯一索引

于 2016-04-20T10:44:35.887 回答