mysql - 好的做法:有多个索引的表?

时间:2010-09-13 11:47:27

标签: mysql database-indexes

对不起,

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

1)这两个列中有两个索引可以吗?

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

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

谢谢, MEM

3 个答案:

答案 0 :(得分:5)

只要你使用,就可以在一个表上使用多个索引,甚至是多个索引

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

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

答案 1 :(得分:1)

每个表有多个索引没有问题,不,每个表的一个索引实际上不是一个指南。

索引太多是无效的,因为

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

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

答案 2 :(得分:1)

为了快速回答你的问题,我想:

  1. 是的,有两个甚至更多的索引
  2. 列是可以的
  3. 不一定。每个表可以有多个索引。
  4. 可能没关系,可能不行。这取决于。带索引的东西是它们占用空间(在DISK中)并且它们使得修改数据的操作(INSERT / UPDATE / DELETE)变慢,因为对于每个人和每个人,都会有一个TABLE 涉及INDEX更新。
  5. 您的索引创建应该由您的查询驱动。查看您将在系统上查询哪些查询并相应地创建索引。