一尘不染

MySQL中有两个单列索引还是一个两个列索引?

mysql

我面临以下问题,我不确定什么是最佳实践。

考虑下表(该表会变大):

id PK | Giver_id FK | FK | 日期

我正在使用InnoDB,据我了解,它会自动为两个外键列创建索引。但是,我还将在需要匹配以下特定组合的情况下进行大量查询:

SELECT...WHERE giver_id = x AND recipient_id = t

每个这样的组合在表中将是唯一的。

在这些列上添加双列索引有什么好处,还是理论上两个单独的索引足够/相同?


阅读 348

收藏
2020-05-17

共1个答案

一尘不染

如果您有两个单列索引,那么在您的示例中将只使用其中一个。

如果您有一个包含两列的索引,则查询可能会更快(应该进行测量)。两列索引也可以用作单列索引,但仅适用于首先列出的列。

有时在(A,B)上有一个索引,在(B)上有另一个索引可能会很有用。这样可以使使用任一列或两列的查询都更快,但是当然也会使用更多的磁盘空间。

选择索引时,还需要考虑对插入,删除和更新的影响。更多索引=更新速度较慢。

2020-05-17