首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向Server添加索引是个坏主意吗?

向Server添加索引是个坏主意吗?
EN

Stack Overflow用户
提问于 2010-05-21 01:12:42
回答 8查看 6.3K关注 0票数 9

我们有一个基于SQL Server的中型应用程序,它没有定义索引.甚至在标识列上也没有。我向我们比较昂贵的应用程序顾问建议,也许我们可以通过在适当的字段上创建一些索引来获得更好的性能(特别是随着数据库的增长),他说:

“索引将对应用程序的其他领域产生重大影响,客户不应在任何情况下创建索引。”

有人听说过这样的事吗?是否存在不应该创建任何索引的情况?我看不出这个应用程序有什么特别之处--它有int标识列,然后是很多字符串列,很多关系表,但我看不到什么特别或奇怪的东西。

谢谢!

编辑:标识列没有使用“标识规范”,它们似乎是由程序设置的,通过Management查看数据库,我无法找到任何索引.

跟进:在一次会议上,我问生产这款产品的公司首席执行官(兼首席架构师),他的反应是,他们觉得在小型到中型的部署中,维护索引的开销对总体用户体验(应用程序做了很多写作)的负面影响要大于索引的好处,但对于大型数据库,它们确实创建了索引。技术支持人员只是过于热心,对他的回答毫无帮助。谜团解开了。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-05-21 06:27:48

雇我,我会为你创建索引。14年的Sybase/ Server经验告诉我要创造这些!该死!索引。除非您的表每个表的记录少于500条。

我的想法是索引哈希节点的大小大致为1000。

您需要注意的另一件事是您的顾问是否已将表规范化。也许,该表有500个字段/列,包含多个概念实体或整整十几个概念实体。这可能是他对创建索引感到紧张的原因,因为如果表中有12个概念实体,那么至少会有12组索引--在任何情况下,他都是绝对正确的.诸如此类。

但是,如果他确实有500个列,或者每个表可以检测到多个概念实体--他是一个非常糟糕的数据设计工程师。在我与更有经验的数据工程师一起工作的所有年中,我们的表很少超过20列。低5侧,平均10侧。有时,为了性能起见,我们确实允许将两个实体混合在一个表中,或者将行发生水平化到表的列中。

当您查看表设计时,您可以用未经训练的眼光查看产品、项目、BuildSheet、FloorPlan、设备等所有记录都卷成一排。您不能将所有这些实体合并到一个表中。

这是我知道他为什么会建议你不要有索引的唯一原因。如果他这样做,你应该知道,他是欺骗性地向你的公司代表他的数据设计技能,你应该立即放弃他从你的每周合同费用。

好吧,看完拉里的帖子-我也同意他的看法。

票数 4
EN

Stack Overflow用户

发布于 2010-05-21 01:44:30

存在过度索引的问题,特别是在使用非常大的表插入和更新大量应用程序中。因此,标题中的问题的答案是肯定的,有时添加索引可能是个坏主意。

这与问题正文中提出的问题完全不同,即“在Server数据库中没有索引是正常的吗?”答案是,除非您使用数据库作为“只写”系统,在这个系统中,数据被添加,但只有在大容量提取并转换成另一个数据存储区之后才会读取,否则数据库中不包含一些索引是非常不寻常的。

你的顾问的陈述很奇怪,让我相信你可能遗漏了一些重要的信息在你的描述中。如果不是,我会说他疯了。

票数 4
EN

Stack Overflow用户

发布于 2010-05-21 01:16:22

你有多余的磁盘空间吗?我见过指数比表更重的例子。

然而,任何索引都不存在!除了所有读取操作都需要整个表时,不可能有这样的情况。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2878985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档