Sql server 2005 我应该给小表添加索引吗?

Sql server 2005 我应该给小表添加索引吗?,sql-server-2005,indexing,Sql Server 2005,Indexing,是否有任何理由向元素较少(少于10个)的表中添加索引? 它经常用于连接,但我不确定这样小的表上的索引是提高性能还是降低性能 编辑:表中的行非常小:7列,总大小小于500字节,所以我认为它可以存储在服务器内存中(这是Paul Sanwald注释的答案)与所有性能问题一样,答案是:创建性能测试并测量结果 否则,答案有90%的可能性是错误的。这样大小的表不太可能使用索引。如果表的大小是稳定的并且总是很小,我就不会添加索引 网上图书: 索引小表可能不可用 最佳,因为它可以接受查询 优化器遍历索引的时间更

是否有任何理由向元素较少(少于10个)的表中添加索引? 它经常用于连接,但我不确定这样小的表上的索引是提高性能还是降低性能


编辑:表中的行非常小:7列,总大小小于500字节,所以我认为它可以存储在服务器内存中(这是Paul Sanwald注释的答案)

与所有性能问题一样,答案是:创建性能测试并测量结果


否则,答案有90%的可能性是错误的。

这样大小的表不太可能使用索引。如果表的大小是稳定的并且总是很小,我就不会添加索引

网上图书:

索引小表可能不可用 最佳,因为它可以接受查询 优化器遍历索引的时间更长 搜索数据而不是执行 简单的表格扫描。因此,索引 在小桌子上可能永远不会使用, 但仍必须作为数据进行维护 表中的内容发生了变化


因此,为小表编制索引可能不是一个好主意。

当您在表上创建主键时,它将创建一个聚集索引(假设您还没有在表上创建另一个聚集索引。可能只有一个)。因为您正在谈论在其他表上引用它,所以我假设您将这样做。因此,为了回答您的问题,不必创建索引,因为将为您创建一个索引,假设您使用主键查找信息


可能不是,但它至少部分取决于表中有多少列以及这些列的类型。如果您的行太大,无法存储在内存中,但索引可能太大,那么在查询中经常使用的列子集上建立索引是有意义的。

我同意。这样一个小集合的收益不太可能超过读取指数的成本。