我写了以下查询,但是由于按行价格有大量行; 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包含大量数据,并且具有多行单一值,对应于listing_companies表的单行。
突出显示的子查询会产生问题并占用大量执行时间。
建议任何备用查询。
答案 0 :(得分:0)
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
尝试分别运行两个查询。检查两者是否都根据要求给出结果。如果是,则数据库可能存在问题。首先尝试一下。