我在数据库中有一个字段几乎是唯一的: 98%的时间值是唯一的,但它可能有一些重复。我不会在这个领域做太多的搜索;比如说一个月两次。该表目前有大约5000条记录,每月将增加约150条记录。
此字段是否应该有索引?
我正在使用MySQL。
发布于 2008-11-12 20:56:05
我认为“近乎独一无二”的说法可能是在转移视线。数据要么是惟一的,要么不是,但这并不能决定您是否出于性能原因而对其进行索引。
答案:
5000条记录真的一点也不多,而且不管你是否有一个索引,搜索仍然会很快。按照这样的插入速度,您需要3年时间才能达到10000条记录,这仍然不是很多。
就我个人而言,我不会为添加索引而烦恼,但即使您添加了索引,这也无关紧要。
解释:
在决定添加索引时,您必须考虑插入速度和选择速度之间的权衡。
如果没有索引,对该字段执行select
意味着MySQL必须遍历每一行并读取每一个字段。添加索引可以避免这种情况。
索引的缺点是,每次插入数据时,除了添加数据外,DB还必须更新索引。这通常是一个很小的开销,但是如果您有大量的索引,并且正在进行大量的写入,那么您就会真正注意到这一点。
当您在数据库中获得这么多行时,您无论如何都会想要一个索引,否则您的选择将花费一整天的时间,但这只是一些需要注意的事情,这样您就不会在字段上添加索引“以防万一我需要它”。
发布于 2008-11-12 20:55:05
这根本不是很多的记录;我不会费心在那个表上建立任何索引。字段的相对唯一性是无关紧要的--即使是在已有数年历史的商用硬件上,我也希望对该表的查询只需要几分之一秒的时间。
发布于 2008-11-12 20:55:42
您可以使用一般的经验法则:当它成为问题时进行优化。在你意识到你需要一个索引之前,不要使用它。
https://stackoverflow.com/questions/285313
复制相似问题