首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引(col1,col2)和索引(col2,col1)

索引(col1,col2)和索引(col2,col1)
EN

Stack Overflow用户
提问于 2016-04-20 08:53:01
回答 1查看 270关注 0票数 0

1在一个表中,index I1 on T(col1, col2)index I2 on T(col2, col1)有什么不同?我们能同时创造两个吗?以Unique Index为例。

指数跳频扫描似乎规定列顺序很重要,这意味着I1可能不同于I2。

在另一篇文章中,我看到

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2016-04-20 10:44:35

复合指数的排序键

请遵循以下准则,在复合索引中排序键:

创建索引,以便WHERE子句中使用的键构成一个前导部分。如果在WHERE子句中更频繁地使用某些键,那么一定要创建索引,以便更频繁选择的键构成一个前导部分,从而允许只使用这些键的语句使用索引。如果在WHERE子句中同样经常使用所有键,那么在CREATE语句中将这些键从最有选择性的键排序到选择最少的键,将提高查询性能。如果在WHERE子句中使用所有键的频率相同,但数据在其中一个键上被物理排序,那么将该键放在复合索引中的第一位。

来自:acc.htm#2174

2关于同一个问题:为什么我们只使用创建索引而不是创建唯一索引?在这种情况下,我们使用创建唯一的索引?

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36738550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档