gpt4 book ai didi

java - 数据库索引如何工作?

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:23 26 4
gpt4 key购买 nike

我想弄清楚数据库索引是如何工作的以及何时应该使用它。我读了一些关于这方面的文章,我发现的一篇重要文章位于 How does database indexing work?。 .

工作原理:-

优点 2:- 阅读以上链接中的讨论后,索引的一个帮助是它减少了要迭代的数据 block 的数量,如示例 1 中所述。

优势 1:- 但是我又想到了一个问题,在引入索引之后,它还必须从索引表(任何数据存储在内部生成)中搜索索引,这应该又是一次。因此,在进一步阅读之后,我发现索引通常以有效的方式存储,通常使用像 B 树这样的数据结构,它可以快速向下钻取到任何值,并且在转到节点后,它将为我们提供给定值的记录的确切内存位置在 where 或 join 条件中。正确吗?所以基本上索引 srores 是我们在其上创建索引的记录的值和实际记录的内存位置。

何时应该使用:- 因为我们知道如果我们在任何列上创建索引并且如果我们插入/更新/删除该列的任何值,则需要为该列更新索引索引表。因此在 CUD 操作期间会占用一些额外的时间和内存。所以什么时候应该使用它。想象一下,我们从用户屏幕一次创建一个客户。所以一天结束时的总客户数是 100 万。现在如果我们想搜索属于 NewYork 的客户,这里的索引会有很大帮助。同意它会稍微减慢插入客户的速度,这会有点糟糕,但我们在检索纽约客户期间获得的性能将非常好。

如果您同意/不同意上述发现,请纠正我?

最佳答案

您的一般结论非常好。

是的,对于某些查询,索引意味着需要读取的数据 block 更少。

是的,Oracle 中的默认索引类型是使用 B-Tree 在内部实现的.

是的,在带有索引的表上创建/更新/删除操作有一些开销——无论是在性能还是使用的空间方面——但这种开销通常可以忽略不计,并且当查询性能的改进是考虑过。

我衷心推荐阅读 Oracle Concepts Guide on indexes .

关于java - 数据库索引如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com