暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在执行任何查询之前,需要为每个表创建索引

ASKTOM 2018-11-29
238

问题描述

我正在运行一个Oracle 12c数据库,该数据库具有32gb ram和大约30列的〜1 mln行。如果我尝试进行联接或没有索引的地方,我的查询将永远运行。如果我创建索引,它会在几秒钟内完成。

这可能与数据库的配置有关吗?

问候,
1月·威廉

专家解答

Could this have something to do with the configuration of the database?

如果您有一个100万行且没有索引的表,则数据库必须扫描所有行以查找与where子句匹配的行。如果您的查询只返回几行,这是一个巨大的浪费。

索引使数据库能够找到符合您的搜索条件的几行的位置。所以你只从表中读取这些行。使您的查询更快。

索引比这要多得多;)

我建议你仔细阅读这些是如何工作的。以下资源将有所帮助:

我对索引视频系列的介绍:https://www.youtube.com/watch?v=Rlgb7LwOiHk&list=PL78V83xV2fYklRnurEpbRYh12nBTFNmC-
使用索引,卢克!Markus Winand致力于解释索引的网站和书籍:https://use-the-index-luke.com/

我的帖子如何创建索引和获取执行计划,以找出数据库是否正在使用它们:

https://blogs.oracle.com/sql/how-to-create-and-use-indexes-in-oracle-database
https://blogs.oracle.com/sql/how-to-create-an-execution-plan

当您获得更高级的信息时,我建议阅读Richard Foote的博客,这是Oracle数据库中索引的最佳资源:

https://richardfoote.wordpress.com/

祝你好运!
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论