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)。
每个人都有什么见解吗?我的问题是,当我们选择一个而不是另一个时,而不是关于 ?
但是,当它们共存时,是两个不同的indice/对象吗?秩序重要吗?为什么这个例子会对两者使用相同的索引呢?除了(col2,col2)之外,还应该创建另一个索引(col1,col2),因为订单很重要吗?
2关于同一个问题:为什么我们只使用CREATE INDEX而不使用CREATE UNIQUE INDEX?在这种情况下,我们使用CREATE UNIQUE INDEX?
发布于 2016-04-20 10:44:35
复合指数的排序键
请遵循以下准则,在复合索引中排序键:
创建索引,以便WHERE子句中使用的键构成一个前导部分。如果在WHERE子句中更频繁地使用某些键,那么一定要创建索引,以便更频繁选择的键构成一个前导部分,从而允许只使用这些键的语句使用索引。如果在WHERE子句中同样经常使用所有键,那么在CREATE语句中将这些键从最有选择性的键排序到选择最少的键,将提高查询性能。如果在WHERE子句中使用所有键的频率相同,但数据在其中一个键上被物理排序,那么将该键放在复合索引中的第一位。
来自:acc.htm#2174
2关于同一个问题:为什么我们只使用创建索引而不是创建唯一索引?在这种情况下,我们使用创建唯一的索引?
它表示索引列中的值组合必须是唯一的。
来自:http://www.techonthenet.com/oracle/indexes.php
请记住:如果要在表上创建唯一的键,那么也会自动创建唯一的索引。
https://stackoverflow.com/questions/36738550
复制相似问题