首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle索引列

Oracle索引列
EN

Stack Overflow用户
提问于 2015-11-24 16:27:33
回答 3查看 81关注 0票数 0

这是一个简短的例子。我意识到我不能为每个可能的场景创建索引,但是如果我想将数据仓库降低到每个表的3-4个索引,下面是一个示例问题。

如果我有一个包含Product、ZipCode、DatePurchased和其他50列的表。*如果用户有时想通过产品进行查询,*有时通过Product&State*,有时通过DatePurchased *,有时只通过状态查询。

我需要为这4种情况建立索引吗?或者我可以做一个索引并包含所有4列,Oracle会看到我只要求where子句中的一个或两个字段?

尤其是Product&State,我是否建立了一个索引并同时包含了这两个列?如果where子句只有Product,那么它会达到这个索引吗?或者,如果我只想要状态,它会达到这个指数吗?还是需要一个单独的索引,一个用于Product,一个用于state,另一个用于Product&State合并?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-24 17:12:58

我可能会为以下列创建索引:

  • (产品,状态)<--应该同时用于产品查询和Product+State查询
  • (国家)
  • (DatePurchased)

关于最后一个问题;如果表很大或将要变大,我将在DatePurchased列上进行分区,这样,在查询DatePurchased时,您就可以获得分区修剪的好处,而且您可能不需要单独的索引。

和所有东西一样,您应该用表和数据来测试它!

票数 1
EN

Stack Overflow用户

发布于 2015-11-24 16:44:48

我尽量保持简单,并根据需要进行调整。因为您知道用户将按产品、状态和数据搜索进行查询,所以在这3列中的每一列上都设置一个索引。它也应该有助于产品/状态的情况。如果您从经验上发现产品/状态案例需要改进,那么添加它。顺便说一句,额外的索引会减慢插入速度,但不应该对查询产生负面影响。

票数 1
EN

Stack Overflow用户

发布于 2015-11-24 22:30:42

为下列列创建索引:

产品

DatePurchased

以及对国家的分割。

研究一些关于用户查询(或您自己的测试SQL)的解释计划,以查看索引是否被正确使用。

此外,对Bitmap和B-Tree索引进行实验,因为这些索引在数据仓库环境中是常见的和有用的。

HTH

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

https://stackoverflow.com/questions/33898877

复制
相关文章

相似问题

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