告诉我一个不需要SQL Server索引的情况

时间:2010-03-19 14:36:52

标签: sql sql-server indexing

您能否告诉我不需要在SQL Server表上建立索引的情况?

9 个答案:

答案 0 :(得分:2)

我认为这将是一个表格,您需要快速转储数据,并且可能需要高速转储(如数据采集应用程序,您可以从传感器转储原始数据)以便稍后处理。这是因为索引会因重新排列索引的开销而导致数据插入速度变慢。

答案 1 :(得分:1)

从技术上讲,它永远不会“必需”,但它总是一个好主意。如果您没有聚簇索引(并且非聚簇索引需要聚簇索引才能工作),那么每次从该表访问数据时,都必须执行表扫描以检索信息。如果表中的行数极少,那么索引在技术上几乎没有什么好处。

答案 2 :(得分:1)

想不出一个真正伟大的例子。也许如果你有一张表因任何原因只保留一个值。没有必要索引该表。

答案 3 :(得分:1)

如果表格低于特定行数,则执行表扫描比查找索引更快。

我不确定哪一个比另一个更快的确切数字。

答案 4 :(得分:1)

可能不需要的地方是像日志表那样保存一些事件但永远不会引用表中的主键。如果您访问该表,则可能是文本搜索,通常需要进行表扫描。虽然人们可以轻易地争辩说,如果没有日期/时间列,日志表就没有了,应该将其编入索引。

答案 5 :(得分:0)

我的旧DBA告诉我,根据我们环境中的经验法则,行数少于50K的窄表不需要从该表中进行数据检索索引,因为索引的成本查找抵消了表扫描的成本。

答案 6 :(得分:0)

我可以想到一些索引可能不是必需的例子,但我真的不能想到任何你不想索引你的表的例子。

至少你应该将你的主键编入索引 - 没有理由不这样做。

答案 7 :(得分:0)

对于非登台表,当表有零(或可能只有一行)行且没有外键时。 但是,您如何阻止某人再次添加相同的值?

否则,可能对于在一次调用中清空然后批量处理的表进行暂存的好处

简单地说,几乎没有你不在某处使用索引的情况......

答案 8 :(得分:0)

我参与了ETL解决方案(Integration Serices写入SQL Server 2005),因为插入(并且只有插入)需要花费数小时(尽管后来导入数据)我不得不丢弃大量索引在一个Analysis Services多维数据集中,定义了其他关系,你可能会认为索引并没有真正被抛弃。对于某些表,折衷方案是在写入过程之前删除索引,然后再重新创建它们;娱乐花了很长时间,但仍然比插入同步指数建设的势头更快。