mysql-好的实践:有多个索引的表?

mysql-好的实践:有多个索引的表?,mysql,database-indexes,Mysql,Database Indexes,对不起大家 我有一个3列的小表,但我会按一列或另一列列出值 1) 其中有两列有索引可以吗 2) 每个表应该只有一个索引吗 3) 在极限情况下,如果我们有一个包含100列的表,例如,我们有50列带有索引,这样可以吗 谢谢, MEM只要您使用多个索引,就可以在一个表中使用多个索引,甚至多个索引 对查询运行EXPLAIN并检查正在使用哪些索引。如果有索引没有被任何查询使用,那么它们不会给您带来任何好处,只会减缓对表的修改。应该删除这些未使用的索引 如果您还没有考虑过多个列索引,也可以考虑多个列索引。<

对不起大家

我有一个3列的小表,但我会按一列或另一列列出值

1) 其中有两列有索引可以吗

2) 每个表应该只有一个索引吗

3) 在极限情况下,如果我们有一个包含100列的表,例如,我们有50列带有索引,这样可以吗

谢谢,
MEM

只要您使用多个索引,就可以在一个表中使用多个索引,甚至多个索引

对查询运行EXPLAIN并检查正在使用哪些索引。如果有索引没有被任何查询使用,那么它们不会给您带来任何好处,只会减缓对表的修改。应该删除这些未使用的索引


如果您还没有考虑过多个列索引,也可以考虑多个列索引。

< P>每一个表有多个索引是没有问题的,并且不,每个表的一个索引实际上不是一个指南。 索引太多效率低下,因为

  • 它需要额外的存储空间
  • MySQL需要确定用于特定查询的索引

编辑:根据Pablo和Mark的说法,为了建立有效的索引,您需要了解您的数据是如何被访问的。然后您可以细化和减少索引。

要快速回答您的问题,我认为:

  • 是的,可以有两列或更多列带有索引
  • 不一定。每个表可以有多个索引
  • 可能没问题,也可能没问题。视情况而定。索引的问题是它们占用空间(在磁盘中),并且它们使修改数据(插入/更新/删除)的操作变慢,因为对于它们中的每一个,都会涉及一个表索引更新

  • 索引的创建应该由查询驱动。查看您将对系统进行哪些查询,并相应地创建索引。

    非常感谢您的澄清。:)我懂了。。。我试图更好地理解我们什么时候应该有两个索引或使用一个多重索引背后的原理。对于同时获取firstname和lastname的名称索引,这是有意义的。。。但我必须看到更多的例子。谢谢你在这么简单的问题上提出这两个新问题解释和设置多个列索引:DThis是一个很好的建议,很多人只对所有字段进行索引,甚至不考虑使用多个索引。马克:如果你有很多索引,你会知道在更新表时它会减慢多少速度吗?谢谢。所以性能和空间。这似乎是个问题。所有答案似乎都指向这个方向非常感谢,明白了。因此,正如马克·拜尔斯所建议的,解释(顺便说一句,我不知道)可以用于这样的决定。感谢您抽出时间回答。:)对他是你的朋友!在MySQL和几乎所有其他关系数据库服务器中。。。