我面临以下问题,我不确定最佳做法是什么。
考虑下表(它会变大):
ID PK | giver_id FK |收件人 ID FK |日期
我正在使用 InnoDB,据我了解,它会自动为两个外键列创建索引。但是,我也会做很多查询,我需要匹配以下特定组合:
SELECT...WHERE giver_id = x AND recipient_id = t
。
每个这样的组合在表中都是唯一的。
在这些列上添加两列索引是否有任何好处,或者理论上两个单独的索引是否足够/相同?
最佳答案
如果您有两个单列索引,则在您的示例中只使用其中一个。
如果您有一个包含两列的索引,则查询可能会更快(您应该衡量)。两列索引也可以用作单列索引,但仅适用于首先列出的列。
有时在 (A,B) 上有一个索引,在 (B) 上有另一个索引会很有用。这使得使用其中一列或两列的查询速度更快,但当然也会占用更多磁盘空间。
在选择索引时,还需要考虑插入、删除和更新的效果。更多索引 = 更慢的更新。
关于sql - MySQL 中的两个单列索引与一个两列索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349817/