3

对不起大家,

我确实有这个包含 3 列的迷你表,但是,我将按一列或另一列列出值。

1) 可以有两个带有索引的列吗?

2)我们应该每张表只有一个索引吗?

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

谢谢,记忆

4

3 回答 3

5

只要你在使用它们,在一张表上有很多索引,甚至是多个索引都很好。

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

如果您还没有这样做,您可能还想考虑多列索引。

于 2010-09-13T11:50:44.697 回答
1

每个表有多个索引没有问题,不,每个表一个索引并不是真正的指导方针。

索引过多是低效的,因为

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

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

于 2010-09-13T11:52:16.047 回答
1

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

  1. 是的,有两个甚至更多列有索引是可以的
  2. 不必要。每个表可以有多个索引。
  3. 可能没问题,也可能不太行。这取决于。索引的问题是它们占用空间(在磁盘中)并且它们使修改数据(插入/更新/删除)的操作变慢,因为对于每个人来说,都会涉及到表索引更新。

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

于 2010-09-13T11:52:34.843 回答