2010-05-17 47 views
3

MySQL中的一个表最好有多少个索引?每个数据库表有多少索引?

我有一个company表,其中我主要搜索ID,statecategory

+1

你会在这个表上运行什么类型的查询?插入,上移,选择,删除? – 2010-05-17 00:27:23

+0

更多细节将有所帮助。我们必须猜测,ID可能是您的主键,而不是ID和类别的组合(这是完全可能的)。如果您发布架构,我们会有更好的主意。 – wlangstroth 2010-05-18 14:37:15

+0

您搜索“FOR”ID,州,猫或您搜索“BY”他们。对我而言,“FOR”表示它们在选择列表中。例如我搜索歌曲的艺术家。 BY在where子句中。 – 2013-05-31 19:54:11

回答

5

对于这个问题没有一个单一的答案:创建尽可能多的索引,以使您的查询速度够快,不再需要。

你必须决定何时权衡各种事情什么指标:

  • 你拥有的索引越多,速度较慢的插入和更新将是(因为他们需要更新所有索引)
  • 对没有适当索引的表进行查询可能速度很慢,如果数据库必须执行表扫描
  • 某些列不需要索引(例如,“性别”列,其中唯一可能的值为“M”或“F”)

对于您的特定场景,似乎有三个索引,一个是关于ID(如果这是主键,那么它已经有一个隐式索引),一个关于状态,一个关于类别就足够了。

+0

我怀疑状态或类别是否会对自己有用。但没有基数就没有办法知道。如果他们在所有50(53)个州开展业务,那么通过这些指数可能达到1-5%,但如果它是一个主要在10个州开展业务的区域业务,那么它可能不会足够低聚类因子是有用的。 – 2013-05-31 19:58:06

0

没有“首选”数量的索引,这一切都取决于您的查询。在你的例子中,你需要不超过3个索引,一个用于ID,一个用于状态,另一个用于类别。