我有一个MySql表,其中包含股票报价(stock_symbol,quote_date,open_price,high_price,low_price,close_price),需要找出各种最大值和最小值:Max High / Min Low超过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语句执行得更好?
任何想法/帮助将不胜感激。谢谢!
答案 0 :(得分:0)
最好在一个语句中执行,但问题仅在于索引:确保在所有列上都有一个索引,您可以在where子句中询问最小值和最大值:hight_price,low_price和STOCK_SYMBOL。
对于索引,此请求将是即时的,即使对于非常大的表而且没有LIMIT 10
不要在此查询中放置ORDER BY
:它没用,因为min和max是相同的,与您在集合中查看的顺序无关。
您的查询应该只是
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