太多数据库索引数量是多少?

29 浏览
0 Comments

太多数据库索引数量是多少?

我正在处理一个非常大的Oracle数据库的项目(尽管我的问题同样适用于其他数据库)。我们有一个web界面,允许用户在几乎所有可能的字段组合上进行搜索。

为了让这些搜索更加快速,我们正在为我们相信用户通常会搜索的字段和字段组合添加索引。然而,因为我们不知道我们的客户将如何使用这个软件,很难确定要创建哪些索引。

空间不是问题;我们拥有一个4TB的RAID驱动器,只使用其中的一小部分。但是,我担心拥有太多索引会带来可能的性能问题。因为每次添加、删除或修改一行时都需要更新这些索引,所以我认为在单个表上拥有数十个索引是一个不好的想法。

那么,多少个索引被认为是太多了?是10个?25个?50个?还是只涵盖那些非常常见和明显的情况,忽略其他一切呢?

admin 更改状态以发布 2023年5月21日
0
0 Comments

我通常是这样操作的。

  1. 获取一份真实查询日志,记录典型运行数据的所有查询。
  2. 添加索引,让最重要的查询在执行计划中命中索引。
  3. 尽量避免索引那些有很多更新或插入的字段。
  4. 添加几个索引后,获取新的日志并重复以上步骤。

和所有优化一样,我会在达到所需性能时停止操作(显然,这意味着点0应该是确定具体性能要求)。

0
0 Comments

这取决于对表进行的操作。

如果有很多SELECT操作,而且很少更改,那就无论如何都建立索引...... 这些将(可能)加快SELECT语句的速度。

如果表受到UPDATE,INSERT和DELETE的重击... 那么建立很多索引会很慢,因为每次执行这些操作时都需要修改它们。

话虽如此,你可以在表中添加很多没有意义的索引。在只有2个不同值的列中添加B-Tree索引将是毫无意义的,因为它在查找数据方面没有任何帮助。列中的值越唯一,它受益于索引的程度就越大。

0