首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >几乎唯一的字段是否应该有索引

几乎唯一的字段是否应该有索引
EN

Stack Overflow用户
提问于 2008-11-12 20:48:47
回答 8查看 1.2K关注 0票数 2

我在数据库中有一个字段几乎是唯一的: 98%的时间值是唯一的,但它可能有一些重复。我不会在这个领域做太多的搜索;比如说一个月两次。该表目前有大约5000条记录,每月将增加约150条记录。

此字段是否应该有索引?

我正在使用MySQL。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-11-12 20:56:05

我认为“近乎独一无二”的说法可能是在转移视线。数据要么是惟一的,要么不是,但这并不能决定您是否出于性能原因而对其进行索引。

答案:

5000条记录真的一点也不多,而且不管你是否有一个索引,搜索仍然会很快。按照这样的插入速度,您需要3年时间才能达到10000条记录,这仍然不是很多。

就我个人而言,我不会为添加索引而烦恼,但即使您添加了索引,这也无关紧要。

解释:

在决定添加索引时,您必须考虑插入速度和选择速度之间的权衡。

如果没有索引,对该字段执行select意味着MySQL必须遍历每一行并读取每一个字段。添加索引可以避免这种情况。

索引的缺点是,每次插入数据时,除了添加数据外,DB还必须更新索引。这通常是一个很小的开销,但是如果您有大量的索引,并且正在进行大量的写入,那么您就会真正注意到这一点。

当您在数据库中获得这么多行时,您无论如何都会想要一个索引,否则您的选择将花费一整天的时间,但这只是一些需要注意的事情,这样您就不会在字段上添加索引“以防万一我需要它”。

票数 5
EN

Stack Overflow用户

发布于 2008-11-12 20:55:05

这根本不是很多的记录;我不会费心在那个表上建立任何索引。字段的相对唯一性是无关紧要的--即使是在已有数年历史的商用硬件上,我也希望对该表的查询只需要几分之一秒的时间。

票数 1
EN

Stack Overflow用户

发布于 2008-11-12 20:55:42

您可以使用一般的经验法则:当它成为问题时进行优化。在你意识到你需要一个索引之前,不要使用它。

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

https://stackoverflow.com/questions/285313

复制
相关文章

相似问题

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