我最近开始阅读有关面试的数据库并且遇到了这个问题。任何人都可以帮我这个吗?
答案 0 :(得分:2)
基本上因为拥有太多的SQL索引会使UPDATE和INSERT更慢并且还会占用磁盘空间。因此,在列中使用不打算用于过滤器或订单的索引是一个坏主意。
有时你需要一个复杂的索引(由两列或更多列组成),因此RDBMS为每个可能的列组合创建一个索引是荒谬的。
答案 1 :(得分:0)
Ditto Rafa。让我补充一下:
拥有索引可以更快地找到所需的记录。但它使插入和删除记录更慢,并且它使用更多的磁盘空间和其他资源。
所以这是一个权衡。如果您很少或从不使用某个字段来查找记录,那么为它创建和维护索引是没有意义的。就像假设你有一个带有客户名称的数据库。索引姓氏可能有意义。您可能按姓氏进行了大量搜索。但是如果你有一个Junior / Senior / Esq / etc的字段,那么对它进行索引可能就没那么重要了。你多久会说,“我们不知道他的账号,我们不知道他的名字,我们不知道他的地址,但我们确实知道他是'少年'”。
如果经常读取数据库但很少更新,则可以继续在关闭的情况下创建索引。如果数据库主要是编写的并且很少被读取 - 就像事务存档一样 - 那么这将是减少索引的原因。