我目前正在学习Oracle的索引。 在Oracle documentation中,可以找到以下内容:
虽然数据库在具有完整性约束的列上为您创建索引,但建议在此类列上显式创建索引。
这里有人可以告诉我这背后的理由吗? 如果数据库自动创建索引,为什么我们要明确地在这些列上创建另一个索引?
答案 0 :(得分:1)
至少,如果您明确创建索引,则可以为其指定有意义的名称。如果您需要按名称引用索引,它将采用人类可读的形式。
请注意,您可以在USING INDEX
子句中创建显式索引,同时创建约束。该文档有几个示例:https://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm#ADMIN11725
答案 1 :(得分:1)
我唯一的想法是那些自动创建的索引得到了一些奇怪的名称,要么生成为SYS%
,要么从约束名继承名称。保留索引的一些命名约定