考虑具有以下架构的 MySql 表
+-------------------+------------+------+-----+-
| Field | Type | Null | Key |
+-------------------+------------+------+-----+-
| id | int(11) | NO | PRI |
| user_id | int(11) | YES | MUL |
| following_user_id | int(11) | NO | MUL |
+-------------------+------------+------+-----+-
现在我需要像这样的查询
select * from table where user_id = <x> and following_user_id = <y>;
并且
select * from table where following_user_id = <x> and user_id = <y>;
所以我正在考虑对 2 列进行复合索引,如下所示:
index(user_id, following_user_id)
和
index(following_user_id, user_id)
1)索引是根据需要创建的,但是当记录很多(〜百万)时它们会起作用吗?
2) 索引会在正确的时间使用正确的索引来加速查询吗?
PS:我不需要sort/range selection
查询,只需要直接匹配查询。是否有更好的索引方案可用于此要求?