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

Oracle过索引表
EN

Database Administration用户
提问于 2016-02-03 13:40:39
回答 2查看 395关注 0票数 0

我试图提高Oracle 11g中视图的性能,该视图连接了11个表,查询中最大的3个表是40、27、19兆行。我发现每个大表都有超过80个不同的索引。此外,我怀疑数据库服务器缺乏内存。我知道许多索引会损害更新、插入和删除操作的性能。我想知道这么多索引是否会降低复杂的SELECT查询的性能?

EN

回答 2

Database Administration用户

发布于 2016-02-03 14:53:50

对我来说,太多的索引意味着插入、更新或删除行成本更高。因为,如果索引有任何用处,就需要维护它们。查找所有列的索引,这些列要么不查询,要么不经常查询,然后删除它们。查找列相同的所有索引,但以不同的顺序删除这些索引的所有版本(只有一个版本)。例如,一个好的索引应该从低基数开始,并变得更具体。例如,国家,州,城市,邮政编码。另一种很好的方法是,如果以日期和其他字段为首的日期列搜索以首先消除最大行数,则选择其他字段匹配的值。试着将索引的数量减少到每个表少于10个。

尽管有用的索引数量取决于这是OLTP、DSS还是数据仓库。

票数 0
EN

Database Administration用户

发布于 2020-10-24 01:41:08

正如JSapkota的评论所说,StackOverflow上存在答案

指数实际上能降低选择性能吗?是的,虽然非常轻微如果您的索引可能被考虑为查询,但无法使用,优化器将花费很短的时间来思考是否使用和如何使用它(在非常复杂的索引和视图的很少情况下,如果索引性能提示错误,则可能最终选择次优查询计划)。

上述引文中的“短时间”通常在微秒范围内,最坏的情况下只有几毫秒。

另一方面:

过多的索引会导致exec计划稳定性的问题。.i.e。当Oracle突然“在没有警告的情况下更改执行计划”时,您可能会遇到问题。这也可能是一个迹象,过去曾出现过性能问题,有人试图解决这些问题,却不知道到底发生了什么。ibre5041

所以也许你应该花点时间寻找未使用的索引

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

https://dba.stackexchange.com/questions/128145

复制
相关文章

相似问题

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