SQL Server 2008索引-查询时的性能提升与INSERT/UPDATE时的性能下降



如何确定通过索引同一表中的列而在SELECT上获得的性能是否会超过在INSERT上的性能损失?当索引弊大于利时,表的大小是否存在一个"临界点"?

我有一个表在SQL Server 2008与2-3百万行在任何给定的时间。每次在表上执行插入操作时,也会使用同一表的两个列对其进行查找。我正在尝试确定为查找中使用的两列添加索引是否有益。

和其他sql相关的东西一样,这取决于:

  • 它们是什么样的字段?Varchar吗?Int ?Datetime吗?
  • 表上还有其他索引吗?
  • 是否需要包含额外的字段?
  • 聚类指数是什么?
  • 一个事务中插入/删除了多少行?
唯一真正知道的方法是对它进行基准测试。将索引放置在适当的位置并进行频繁的监视,或者运行跟踪。

这取决于您的工作负载和需求。有时数据加载一次,读取数百万次,但有时并非所有加载的数据都被读取。

有时读或写必须在一定时间内完成。

情况1:如果表是静态的,并且被大量查询(例如:购物车应用程序中的item表),那么在适当的字段上建立索引是非常有益的。

情况2:如果表是高度动态的,并且每天没有很多查询(例如:用于审计目的的日志表),那么索引将减慢写速度。

如果以上两种情况是边界情况,则在表上建立索引或不建立索引取决于争用表最接近哪一种情况。

如果没有,留给查询优化顾问判断。好运。

最新更新