0

我有一个包含股票报价(stock_symbol、quote_date、open_price、high_price、low_price、close_price)的 MySql 表,需要找出各种最大值和最小值:10/20/245/252 天的最高最高/最低最低。

我知道如何使用每个时期的 SELECT 查询来做到这一点:

SELECT max(high_price), min(low_price) FROM mytable WHERE stock_symbol = 'GOOG' ORDER BY quote_date DESC LIMIT 10;

是否可以使用单个 SELECT 语句来完成,而不会使数据库服务器的查询过于密集?单个 SELECT 语句会比多个 SELECT 语句执行得更好吗?

任何想法/帮助将不胜感激。谢谢!

4

1 回答 1

0

最好在一个语句中执行此操作,但问题仅在于索引:确保在您询问最小值和最大值或在 where 子句中添加的所有列上都有一个索引:hight_price、low_price 和 stock_symbol。

有了索引,这个请求将是即时的,即使对于非常大的表并且没有你的LIMIT 10

不要ORDER BY在这个查询中放一个:它是没用的,因为最小值和最大值是相同的,与你查看集合的顺序无关。

您的查询应该很简单

SELECT max(high_price), min(low_price) FROM mytable WHERE stock_symbol = 'GOOG'

如何创建索引:http ://dev.mysql.com/doc/refman/5.0/en/create-index.html

于 2012-06-14T19:48:10.187 回答