MySQL查询优化[join]

MySQL查询优化[join],mysql,query-optimization,mysql-slow-query-log,Mysql,Query Optimization,Mysql Slow Query Log,我有下一个问题 SELECT i.*, gu.* vs.* FROM common.global_users gu LEFT JOIN common.global_users_perms gup ON (gu.global_user_id=gup.global_user_id) LEFT JOIN p.individuals i ON (gup.parent_id = i.member_id) LEFT JOIN p.vs ON (i.member_id=vs.member_id AND v

我有下一个问题

SELECT 
i.*,
gu.*
vs.*
FROM 
common.global_users gu
LEFT JOIN common.global_users_perms gup ON (gu.global_user_id=gup.global_user_id)
LEFT JOIN p.individuals i ON (gup.parent_id = i.member_id)
LEFT JOIN p.vs ON (i.member_id=vs.member_id AND vs.status IN (1,4))
WHERE gup.region = 'us'
AND gu.user_type=2
AND ((gu.email='specific@email.com') OR (i.email='specific@email.com') OR (gu.username='specific@email.com'))
ORDER BY i.status, vs.member_id;
下一个计划是什么

+----+-------------+-------+--------+------------------------------------------+------------------+---------+-----------------------------+--------+----------+---------------------------------+
| id | select_type | table | type   | possible_keys                            | key              | key_len | ref                         | rows   | filtered | Extra                           |
+----+-------------+-------+--------+------------------------------------------+------------------+---------+-----------------------------+--------+----------+---------------------------------+
|  1 | SIMPLE      | gu    | ref    | PRIMARY,username,idx_user_type,idx_email | idx_user_type    | 1       | const                       | 524243 |   100.00 | Using temporary; Using filesort |
|  1 | SIMPLE      | gup   | ref    | global_user_id_2                         | global_user_id_2 | 4       | common.gu.global_user_id    |      1 |   100.00 | Using where                     |
|  1 | SIMPLE      | i     | eq_ref | PRIMARY                                  | PRIMARY          | 4       | common.gup.parent_id        |      1 |   100.00 | Using where                     |
|  1 | SIMPLE      |  vs   | ref    | member_id,status                         | member_id        | 4       | p.i.member_id               |      1 |   100.00 |                                 |
+----+-------------+-------+--------+------------------------------------------+------------------+---------+-----------------------------+--------+----------+---------------------------------+
有没有可能加快速度?现在大约需要12秒


p.S.
gu
表中只有两个唯一的
类型
值。并且该表中的所有Recird数都超过1M。

您的计划结果可能表明存在“使用临时;使用“文件排序”意味着排序是在磁盘上进行的,可能是因为磁盘太大,无法放入内存。如果可能,您可能希望增加内存限制


这也可能与排序所依据的列有关。如果通过删除订单,查询的执行速度会更快吗?如果是这种情况,您可能希望查看

是的,不带ORDER子句查询在两个时间内工作得更快,但在我的例子中,ORDER子句中的字段来自两个不同的表(第一个表中没有任何字段)
在某些情况下,MySQL无法使用索引来解析顺序,因为您要连接许多表,并且ORDER BY中的列并非全部来自用于检索行的第一个非恒定表。