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

できれば 1 つのステートメントで実行しますが、問題はインデックスだけです。最小値と最大値を求めるか、where 句に追加するすべての列に必ずインデックスを作成してください: hight_price、low_price、stock_symbol。

インデックスを使用すると、このリクエストは非常に大きなテーブルであっても瞬時に行われます。LIMIT 10

このクエリに an を入れないでください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 に答える