数据库设计-数据库索引建立问题
一个表在没建立索引前,新数据的添加会怎么存储?是顺序存储吗?
当一个表中的已有数据了,现在建立索引,是不是会导致已有的数据按照B-树的建立算法进行调整(当然数据项肯定是在叶节点)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
一个表在没建立索引前,新数据的添加会怎么存储?是顺序存储吗?
当一个表中的已有数据了,现在建立索引,是不是会导致已有的数据按照B-树的建立算法进行调整(当然数据项肯定是在叶节点)?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
这些和数据库具体的实现相关. 比如在Oracle里, 默认的表类型为 Heap organized tables, 当新添加数据时, 数据会被放在 segment里第一个能够放下此数据的自由空间里. 和索引没有关系. 建立索引也不会"导致已有的数据按照B-树的建立算法进行调整". 因为Oracle BTree索引叶节点放得是 key和rowid, 并不是数据项. 推荐一本oracle的书 <<Expert Oracle Database Architecture>>
对Mysql innodb引擎来说, 是Index Organized Tables, 数据项就在B树的叶节点. 它默认肯定是有index的.