我有一个包含用户信息的用户表和一个相关表,它将向当前用户显示相关用户。
为了让相关用户获得用户 ID '25',我的查询看起来像
SELECT
id
FROM users u
INNER JOIN (SELECT
primary_id,
secondary_id
FROM users_rel
WHERE primary_id = '25'
OR secondary_id = '25') temp
ON (u.id = temp.primary_id
OR u.id = temp.secondary_id)
WHERE u.id != '25'
这里的问题是,在users_rel
表格中,用户 ID 可以在主端或辅助端。不要告诉我改变它,因为它已经完成了 600 万条记录,所以我无法改变它。此查询需要 2 到 5 分钟来执行表和表中的4000
记录。user_rel
629241
users
user_rel TABLE
.--------------------------------.
| id | (VARCHAR,36 ) |
| primary_id | (VARCHAR,36) |
| secondary_id | (VARCHAR,36) |
| del | (TINYINT,1) |
|.______________________________.|
和索引被定义为primary_id
和的组合secondary_id