Oracle索引冗余

Mik*_*ebb 3 oracle indexing

我和一位同事是Oracle的新手,正在分析表上的索引.这是遗留物,表格中目前存在索引

Mytable
* ID      (primary key)
* partId  (Id column in part)
* partNum (partNum column in part...partNum can have more than one partId)
* description (description of partNum...can be different for each partNum)
* dateReceived

IDX_PART_ID_PART_NUM(partId, PartNum)
IDX_PART_NUM(partNum)
IDX_DATE_RECEIVED(dateReceived)
Run Code Online (Sandbox Code Playgroud)

看起来我们的索引中有冗余.我们应该从IDX_PART_ID_PART_NUM中删除partNum吗?我们应该删除IDX_PART_NUM吗?如上所述,partNum可以具有多个id,因为每个部分可以在对象中存在多次.

基本上,在Oracle中,索引如何工作?

Fru*_*ner 8

如果您有同时查找partID和查询的查询partNum,则需要维护索引.在指数有两列意味着该指数被分解首先partID一遍,然后为每个partID它被分解partNum.仅使用其他索引partNum对于仅查询partNum和不查询的查询非常有用partID.

这是一篇好文章的链接:http://it.toolbox.com/blogs/confessions/post-index-how-oracle-works-10605

作为一般规则,我将避免触及遗留系统上的索引.如果它是一个已经生产了一段时间的旧系统,那些索引可能是由DBA创建的,他们做了一些分析并计划确保它们运行良好并适合数据的使用.