mysql - 查询是否可以改进,因为它会出现超时异常

标签 mysql sql join group-by sql-update

我如何改进我的查询,因为它会超时异常。有人可以帮助我改进查询...???

UPDATE pdtdeliveryTable p  SET p.OrderID = IFNULL
( 
   (SELECT OrderID from OrderTable o where o.DiagramID=p.DiagramID AND o.DeliveryDate=
   (
        Select min(o2.DeliveryDate) from OrderTable o2 where o2.DiagramId=o.DiagramID Order by o2.DeliveryDate
   )Limit 1),0
)
where p.OrderID=0;

最佳答案

试试这个:

UPDATE pdtdeliveryTable p  
LEFT OUTER JOIN (SELECT o.DiagramID, o.OrderID FROM OrderTable o 
                 INNER JOIN ( SELECT DiagramID, MIN(DeliveryDate) DeliveryDate 
                              FROM OrderTable GROUP BY DiagramID
                            ) AS A ON o.DiagramID = A.DiagramID AND o.DeliveryDate = A.DeliveryDate 
               ) AS A ON A.DiagramID = p.DiagramID
SET p.OrderID = IFNULL(A.OrderID, 0);

UPDATE pdtdeliveryTable p  
LEFT OUTER JOIN ( SELECT DiagramID, OrderID 
                  FROM (SELECT DiagramID, OrderID, DeliveryDate FROM OrderTable ORDER BY DiagramID, DeliveryDate) AS A 
                  GROUP BY DiagramID 
                ) AS A ON p.DiagramID = A.DiagramID 
SET p.OrderID = IFNULL(A.OrderID, 0);

关于mysql - 查询是否可以改进,因为它会出现超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24320612/

相关文章:

mysql - 如何编写这样复杂的查询?

python - MySQL 错误 - 错误 1054 : Unknown column in 'where clause'

PHP查询到数据库

sql - 如何在 SQL Server 2008 中填充长度相同的列值?

mysql - 日期 日期变量

MySQL连接错误

mysql - Mysql 中的条件扇出过滤器

sql-server - INNER JOIN 子句忽略 NULL 值

mysql - Loadfile mysql 的问题

MySQL默认值作为查询