首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候应该创建数据库索引?

什么时候应该创建数据库索引?
EN

Stack Overflow用户
提问于 2010-01-05 03:38:35
回答 4查看 14.6K关注 0票数 10
  • 何时为表设置索引,在创建表期间还是在性能调优时?
  • 索引的优点和缺点是什么?
EN

Stack Overflow用户

回答已采纳

发布于 2010-01-05 04:22:42

很多(大多数?)DBMS使用索引来支持唯一的约束。始终创建索引以强制执行唯一约束;它们(约束)对于数据库的正确操作至关重要。

如果您可以选择如何在多个列上创建索引,则将查询中始终引用的列放在其他字段之前--通常是。如果前面的列也有一定的选择性,这是最好的。

在您有了唯一性所必需的约束之后,请考虑执行引用完整性所需的约束。它们通常也是由DBMS授权的。同样,你不能让你的数据库处于不完整的状态--它是一个逻辑系统,如果它包含谬误,你可以从它证明任何东西,这是没有帮助的。

在处理了唯一性和引用完整性约束(索引)之后,您可能受益于也可能不会受益于其他约束。仔细选择,增加尽可能少的额外(零是一个好的数字)。每个索引减慢更新操作(更新、插入、删除)并使用存储空间。其意图是通过加快查询来赢得自己的位置。但是,不要忘记优化器必须考虑每个索引以及它在回答查询时是否有用,所以索引也会减慢优化器的速度(尽管您可能很难衡量这种效果)。

在添加索引时,将它们添加到选择性列中(不是包含“M”和“F”的“性别”,而是包含1900年至2010年出生日期的“道布”,或者可能比这更明显。考虑额外的列是否有助于回答更多的查询。一些DBMS (如DB2)提供具有额外列的索引,这些列不是唯一性约束的一部分,但提供了查询中经常使用的列。它们允许只进行索引扫描(不需要访问表数据,因为所需的值都在索引中)。

还有很多可以说的,但这涵盖了很多地区。

  • 的索引尽可能少,最好没有额外的索引。
票数 14
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2004032

复制
相关文章

相似问题

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