SQL

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

发布于 2021-05-20 11:05:38

2年前关闭。

  • 在表创建过程中或性能调整时,何时为表设置索引?
  • 索引的优缺点是什么?
关注者
0
被浏览
189
1 个回答
  • 面试哥
    面试哥 2021-05-20
    为面试而生,有面试问题,就找面试哥。

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

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

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

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

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

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

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看