真心求解! Mysql 两表联查,A表900w, B表1000w, 分页查询经过索引构建已经没什么问题, 但是count(id)的时候非常慢, 怎么优化
SELECT count(distinct A.id)
FROM A INNER JOIN B ON A.id = B.bus_id
WHERE A.trade_type in (0,1,2,4) and B.user_id IN (68305, 61831, 35444, 54923, 66298, 67438, 67440, 35427, 62213, 62900, 64550, 67658, 68103, 35441, 35466, 66801)
and B.bus_type = 2;
现有索引, A表id二级索引, B表有bus_id, user_id, 以及(bus_id, user_id, bus_type)联合索引, 现在分页查询获取A表数据ms没问题, 只有count(distinct A.id)很慢, 几十s, 不知道怎么处理了, 希望大家提点意见
这是explain得到的结果
ID | select_type | table | type | possible_key | key | key_len | ref | rows | extra |
---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | B | index | idx_bus_id,idx_user_id,idx_bus_type_user_id | idx_bus_type_user_id | 14 | 9962728 | Using where; Using index | |
1 | SIMPLE | A | eq_ref | PRIMARY | PRIMARY | 4 | B | 1 | Using index |