一尘不染

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

sql

2年前关闭。

  • 在表创建过程中或性能调整时,何时为表设置索引?
  • 索引的优缺点是什么?

阅读 145

收藏
2021-05-16

共1个答案

一尘不染

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

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

在具有唯一性所需的约束之后,请考虑强制实施引用完整性所需的约束。它们通常也是由DBMS强制执行的。同样,您无法承受数据库处于不完整性状态的麻烦-
它是一个逻辑系统,如果它包含谬误,则可以从中证明一切,这无济于事。

在处理了唯一性和参照完整性约束(建立索引)之后,您可能会或可能不会从其他一些好处中受益。仔细选择,并添加尽可能少的附加功能(零是一个好数字)。每个索引都会减慢更新操作(UPDATE,INSERT,DELETE)的速度,并占用存储空间。目的是通过加速查询来赢得自己的位置。但是,请不要忘记优化器必须考虑每个索引以及它是否对回答查询有用,因此索引也会减慢优化器的速度(尽管您可能很难衡量该效果)。

当您添加索引时,请将其添加到选择性列中(不是包含“ M”和“ F”的“性别”,而是包含出生日期在1900年至2010年之间的“
dob”,或者比其更独特的值)。请考虑是否额外的列将帮助回答更多的查询。某些DBMS(例如DB2)为索引提供了额外的列,这些列不是唯一性约束的一部分,但提供了查询中经常使用的列。这些列可以进行仅索引扫描(一个不需要访问表数据,因为所需的值都在索引中)。

可以说的还很多,但这涵盖了很多领域。

  • 尽可能少的索引-最好没有额外的索引。
2021-05-16