向表中添加多个索引是否有缺点?

Jon*_*Jon 24 sql database indexing

我正在创建一个新的数据库,并想知道是否有任何缺点,我认为可能需要一个表添加众多索引.

如果我创建索引但最终没有使用它会导致任何问题吗?

GSt*_*Sto 27

索引使搜索表更快,但写入时间更长.使用未使用的索引会导致一些不必要的减速.

  • 索引也会占用磁盘空间. (2认同)

Pas*_*TIN 16

每个指数:

  • 取一些地方,在磁盘上和RAM中
  • 每次插入/更新/删除行时都需要一些时间来更新

这意味着您应该只定义对您的应用程序需求有用的索引:过多的索引会使写入速度减慢,而不是从读取中获得.


Fre*_*els 5

是.您应该只添加必要的索引.

索引需要额外的空间,并且在插入/更新/删除记录时,DBMS也需要更新这些索引.因此,这意味着更新/添加/删除记录需要更多时间,因为DBMS必须进行一些额外的管理.

向我认为可能需要的表添加大量索引.

您应该只添加那些您确定它们是必要的索引.要确定可以放置索引的列,您可以:

  • 将索引添加到外键列
  • 将索引添加到where子句中经常使用的列
  • 将索引添加到按子句顺序使用的列.

另一种 - 也许是更好的方法 - 是使用SQL事件探查器:

  • 使用SQL事件探查器跟踪您的应用程序/数据库一段时间
  • 保存跟踪结果
  • 使用索引优化向导中的跟踪结果,该向导将告诉您应创建哪些索引,每个索引中应包含哪些列,并且还将告诉您索引的这些列的顺序.