首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库索引

数据库索引
EN

Software Engineering用户
提问于 2012-02-09 14:02:12
回答 6查看 3.2K关注 0票数 12

我对数据库不太熟悉,现在我正在尝试理解索引机制。

据我所知,在RDBMS中,对列进行索引可以加快按该列进行搜索的速度。对于三重存储,这也是正确的,只有在那里索引假设您将搜索(例如)主要通过主题,然后按对象,等等。

我不确定RDBMS,但是在三重存储上,您可以定义多个索引,让存储库为每个查询选择最佳索引(希望我理解正确)。自然,出现以下问题:

为什么我不应该将所有可能的索引添加到三重存储中,并扩展到RDBMS,为什么不在每一列上创建索引(假设我不太懒)?

EN

回答 6

Software Engineering用户

回答已采纳

发布于 2012-02-09 14:18:29

因为,从本质上说,索引是一个额外的表,其中主键是要索引的字段,而唯一的内容是主表的主键。因此,每个更新都必须在使用您更新的字段的每个索引中复制。

这一点在插入时尤为明显。想象一下,如果您对一个表所做的每一次插入都必须在其他20个表上复制。会很慢的。

请注意,对于复合索引、集群索引和全文索引,情况会变得更糟,但我不想让问题复杂化。

票数 25
EN

Software Engineering用户

发布于 2012-02-09 14:18:04

索引基本上是必须构建和存储的附加数据结构。构建inde浪费了CPU的能量(在编写操作期间),并且存储它浪费了磁盘容量。

为什么要构建和存储您从未使用过的索引?

票数 2
EN

Software Engineering用户

发布于 2012-02-09 14:24:09

为表中的每一列创建索引通常是浪费空间,正如其他人所提到的,它可以减慢插入/更新操作的速度。索引用于加速查询。只有在查询列中的值时注意到性能差时,我才建议将索引添加到列中。

某些数据库可能需要表的主键的索引,因此您可能没有选择。此外,如果您有一个非常大的文本列,有一些特定的技术是为全文搜索和索引而设计的,但它们并不总是与用于小型数字列的索引类型相同。

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

https://softwareengineering.stackexchange.com/questions/134184

复制
相关文章

相似问题

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