SQL Server 2008索引 - 查询的性能提升与INSERT / UPDATE的丢失

时间:2011-07-15 18:13:13

标签: sql-server performance sql-server-2008 indexing

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

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

3 个答案:

答案 0 :(得分:4)

与SQL相关的所有内容一样,取决于

  • 他们是什么类型的领域? VARCHAR?诠释?日期时间?
  • 桌子上还有其他索引吗?
  • 您是否需要添加其他字段?
  • 什么是聚集索引?
  • 在事务中插入/删除了多少行?

唯一真正了解的方法是对其进行基准测试。将索引放在适当位置并进行频繁监视或运行跟踪。

答案 1 :(得分:0)

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

有时,读取或写入必须在特定时间内完成。

答案 2 :(得分:0)

案例1:如果表是静态的并且被大量查询(例如:购物车应用程序中的项目表),则相应字段的索引非常有用。

案例2:如果表是高度动态的,并且每天都没有进行大量查询(例如:用于审计目的的日志表),那么索引将减慢写入速度。

如果以上两种情况是边界情况,那么构建索引或不构建索引在表上取决于上面哪种情况下争用中的表最接近。

如果没有将它留给Query tuning advisor判断。祝你好运。