首页 > 解决方案 > 由于执行 JOIN 查询,Mysql 连接丢失

问题描述

我写了以下查询,但由于 stock_prices 有大量行;mysql 抛出连接丢失错误:所以查询是正确的,但我们需要优化一个。
查询

SELECT l.symbol, l.companyname, s.closing, s.change_price, s.stock_return, s.volume
FROM listed_companies as l, stock_prices as s
WHERE l.symbol = s.symbol AND DATE(s.stock_date) = (**SELECT max(`stock_date`) as MaxDate FROM stock_prices WHERE l.symbol = symbol**)  
ORDER BY l.symbol

这里,stock_prices 有大量数据,并且对应于listed_companies 表的单行的多行单值。

突出显示的子查询会产生问题并花费大量执行时间。

建议任何备用查询。

标签: mysqljoindatabase-connection

解决方案


1.

   SELECT l.symbol, l.companyname, s.closing, s.change_price, s.stock_return, s.volume
    FROM listed_companies as l, stock_prices as s
    WHERE l.symbol = s.symbol AND 
    ORDER BY l.symbol

2.

   SELECT l.symbol, l.companyname, s.closing, s.change_price, s.stock_return, s.volume
    FROM listed_companies as l, stock_prices as s
    WHERE  DATE(s.stock_date) = (**SELECT max(`stock_date`) as MaxDate FROM stock_prices WHERE l.symbol = symbol**)  
    ORDER BY l.symbol

尝试分别运行这两个查询。检查两者是否都按要求给出结果。如果是,那么数据库可能存在一些问题。先试试这个。


推荐阅读