首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >oracle表select,索引在第一次执行和清除数据库高速缓存后变慢

oracle表select,索引在第一次执行和清除数据库高速缓存后变慢
EN

Stack Overflow用户
提问于 2021-02-15 22:50:23
回答 1查看 47关注 0票数 0

我已经在我的表上创建了几个索引和主键索引,当我运行select查询时,第一次显示结果需要大约30秒的时间。

但在第一次执行后,当我再次运行查询时,它在不到2秒的时间内给出了结果,在随后的执行中总是一样的。

当我在网上检查某个地方时,我发现由于索引数据库缓存,执行速度更快,因此我使用alter system flush buffer_cache;清除数据库缓存,然后再次执行查询,第一次显示结果需要30秒,第二次执行只需要2秒显示结果。

我是一个新的索引,这是索引的工作方式,还是我有任何其他方法来工作我的查询,将显示结果在2秒的所有时间。

EN

回答 1

Stack Overflow用户

发布于 2021-02-15 22:57:09

它与索引或索引缓存无关。它与缓冲区缓存有关,您正在清除缓冲区缓存。无论何时执行查询,oracle都会检查缓冲区缓存,以查看缓存中是否已经存在所需的内容。如果在缓存中找到它,他可以避免从磁盘进行昂贵的物理读取。如果未在缓存中找到,则从磁盘读取它(速度慢、开销大),并将其放入缓存中。下一次需要数据时,只需从缓存中提取(快速)即可。但是,当您清除缓存时,您会强制它返回到物理磁盘读取。停止刷新缓冲区缓存,数据库将使用正常的缓存数据“工作集”进行“稳定”。

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

https://stackoverflow.com/questions/66210181

复制
相关文章

相似问题

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