2012-05-07 5 views
1

を選択し、このクエリは最初の時間を実行するために約10秒かかり、その後、それぞれの連続した時間が、それは分の上向きになります:スローMySQLのクエリ -

SELECT qQuoteDateTime, 
     qLastSalePrice, 
     qNetChangePrice, 
     qNetChangePct, 
     qShareVolumeQty 
    FROM quotes 
    WHERE qSymbol='GE' 

私が使用しているテーブルには、およそ2300年の記録を持っています。私は誰かがすべてのレコードを表示するために非常に高速なクエリを実装するのを見たことがあるが、私は彼が使用したコードにアクセスする必要はありません。

これをスピードアップするにはどうすればよいですか?

+0

すべての列はどのようなデータ型ですか?あなたのCommon Senseとreko_tの両方が正しいので、DDLを投稿してください。すべての列がncharまたはblobなどの場合は、これが理にかなっています。 – Ben

+0

データの「サイズ」とは何ですか?いくつかのKBs、いくつかのMBの鉱山?かつて私はMySQLデータに似た問題を抱えていました。数百行ありましたが、テーブルのサイズは〜1.5GBでした。多くの量のデータをトラバースするには数秒かかることがあります。 –

答えて

4

クエリでEXPLAINを実行して、なぜ低速であるのかを確認します。最も可能性の高い原因は、qSymbol列にインデックスがないことです。列に索引を作成します。列に索引を作成すると、パフォーマンスが大幅に向上するはずです.MSQLは表の各行をスキャンする必要はなく、索引から対応する行を検索するだけです。

+0

@Downvoter:コメントしますか? –

+0

なぜこれを下落させたのですか?私に完全な応答のように見える.. – dirkbonhomme

+1

2300行では、インデックスなしで10秒まで1分になることはできません。これは、一般的な情報を持つ自動化された回答です。回答者ポイントを取得するだけで誰も助けてくれません。 –

3

データベースに問題があります。またはあなたは間違った木を吠えている。
ここに投稿したクエリは、指定された行数で高速化しているはずです。

まず、クエリを確認してください。それ以外の原因はありません。
コンソールからこのクエリを実行しようとしましたか? PHPMyAdmin?結果は同じですか? 偶然ループ内で実行しますか?
行数は実際2300ではなく2300ですか?