Mysql 为什么这个查询会使服务器崩溃?
今天早些时候,我在一个仓库管理系统中运行了这个查询,它导致我们的系统冻结。我对SQL非常陌生。我把桌子接错了吗?我还需要过滤吗?感谢您的帮助。如果需要,可以提供数据库字典Mysql 为什么这个查询会使服务器崩溃?,mysql,sql,join,left-join,Mysql,Sql,Join,Left Join,今天早些时候,我在一个仓库管理系统中运行了这个查询,它导致我们的系统冻结。我对SQL非常陌生。我把桌子接错了吗?我还需要过滤吗?感谢您的帮助。如果需要,可以提供数据库字典 SELECT customer.name AS Clinic, so.num AS SONum, product.num AS ProductNum, trackinginfo.info AS Lot, soitem.qtyfulfilled AS Qty, soitem.unitprice A
SELECT customer.name AS Clinic, so.num AS SONum, product.num AS
ProductNum, trackinginfo.info AS Lot, soitem.qtyfulfilled AS Qty,
soitem.unitprice AS UnitPrice
FROM customer
INNER JOIN so ON customer.id=so.customerid
LEFT JOIN soitem ON so.id=soitem.soid
LEFT JOIN product ON soitem.productid=product.id
INNER JOIN part ON product.partid=part.id
LEFT JOIN parttotracking ON part.id=parttotracking.partid
LEFT JOIN parttracking ON parttotracking.parttrackingid=parttracking.id
LEFT JOIN trackinginfo ON parttracking.id=trackinginfo.parttrackingid
WHERE customer.name LIKE '%paragon%'
是否确实需要使用
左联接
而不是内部联接
?它更昂贵,所以除非真的有必要,否则不应该使用它。联接中使用的所有列都有索引吗?如果有很多行与所有这些联接匹配,那么它可能只会生成一个巨大的结果,并锁定所有表行,这会阻止其他应用程序查询表。@Barmar,我为这些表提供的唯一资源位于这个链接:您认为如果我将内部连接更改为LEFT,它会工作得更好吗?它可能会工作得更好,但可能无法解决整个问题。但它也可能给出不正确的答案——您是否需要包括没有soitem
、产品
、或跟踪信息的客户?您确定需要使用左连接
而不是内部连接
?它更昂贵,所以除非真的有必要,否则不应该使用它。联接中使用的所有列都有索引吗?如果有很多行与所有这些联接匹配,那么它可能只会生成一个巨大的结果,并锁定所有表行,这会阻止其他应用程序查询表。@Barmar,我为这些表提供的唯一资源位于这个链接:您认为如果我将内部连接更改为LEFT,它会工作得更好吗?它可能会工作得更好,但可能无法解决整个问题。但它也可能给出错误的答案——您是否需要包括没有soitem
、产品
、或跟踪信息的客户?