MySQL查询优化
是否有其他方法优化此查询MySQL查询优化,mysql,Mysql,是否有其他方法优化此查询 select c.* FROM companies AS c JOIN users AS u USING(companyid) JOIN jobs AS j USING(userid) JOIN useraccounts AS ua USING(userid) WHERE j.jobid = 123; 我假设已经创建了适当的索引-这始终是任何查询优化的第一步。 不管索引如何,在这种情况下值得尝试的一种解决方案是反连接: select c.*
select c.*
FROM companies AS c
JOIN users AS u USING(companyid)
JOIN jobs AS j USING(userid)
JOIN useraccounts AS ua USING(userid)
WHERE j.jobid = 123;
我假设已经创建了适当的索引-这始终是任何查询优化的第一步。
不管索引如何,在这种情况下值得尝试的一种解决方案是反连接:
select c.*
FROM companies AS c
WHERE EXISTS (
SELECT 1 FROM users AS u
JOIN jobs AS j USING(userid)
JOIN useraccounts AS ua USING(userid)
WHERE u.companyid = c.companyid
AND j.jobid = 123
)
;
但是,此查询仅列出不同的公司,而原始查询可能会将同一公司相乘多次。一种方法是只选择实际需要的列!为什么你参与其中却从不从中选择价值观?另外,您没有说明您有哪些表结构,启用了哪些索引,等等
说明了什么?是否使用索引。。。你们有指数吗?