Mysql 如何提高此查询的性能?
我有以下MySQL查询,它需要超过421ms的时间,我如何优化它Mysql 如何提高此查询的性能?,mysql,database-performance,Mysql,Database Performance,我有以下MySQL查询,它需要超过421ms的时间,我如何优化它 SELECT j.*, c.cl_business_name, c.cl_short_name, m.me_last_name, m.me_first_name, o.co_name, j.jo_deleted_date FROM clients c, companies o, jobs j LEFT JOIN members m ON j.me_id = m.me_id WHERE ? AND j.jo_de
SELECT j.*, c.cl_business_name, c.cl_short_name,
m.me_last_name, m.me_first_name, o.co_name, j.jo_deleted_date
FROM clients c, companies o, jobs j
LEFT JOIN members m ON j.me_id = m.me_id
WHERE ? AND j.jo_deleted = ? AND j.co_id = o.co_id AND j.cl_id = c.cl_id
ORDER BY jo_deleted_date DESC
在这个位置,您需要一个连接条件(默认情况下,mysql使用内部连接)。本公司与客户之间没有任何关系。应该是这样的:“内部连接公司o ON o.id=c.companiesId” 要加快查询速度,请从较小表中最大的表加入 我只能猜测这个关系是什么样子,但这个查询应该可以帮助您完成 我可以想象,这就是为什么,为了这个响应时间
SELECT
j.*,
c.cl_business_name,
c.cl_short_name,
m.me_last_name,
m.me_first_name,
o.co_name
[, j.jo_deleted_date -> can be ignored, is already in j.* included]
FROM clients c
INNER JOIN jobs j ON j.cl_id = c.cl_id AND j.jo_deleted = ?
INNER JOIN companies o ON j.co_id = o.co_id
LEFT JOIN members m ON j.me_id = m.me_id
WHERE ?
ORDER BY jo_deleted_date DESC
你有创建索引吗?421ms对于一个squillion行来说还不错。说真的,你能展示一下你的桌子设计和说明计划吗。请提供完整的查询,并替换?s。2.请同时提供此查询的解释结果。3.还提供索引列表及其在查询中的表上定义的列名。4.你确定不到半秒的运行时间就那么糟糕吗?我同意显式连接语法比隐式连接语法好,但是,就查询性能而言,几乎没有什么区别。当存在差异时,通常是因为不理解from子句中显式连接的优先级高于逗号运算符。公司和客户之间不必有直接的关系,他们通过工作表进行链接。